Linux v3.12.5 rebase
This commit is contained in:
parent
ace8ec2197
commit
4c74055fdc
@ -1,39 +0,0 @@
|
||||
Bugzilla: 1015905
|
||||
Upstream-status: 3.13 (should hit stable)
|
||||
|
||||
From 90e4e23d52fd04f228eed2c3d341136c50058b37 Mon Sep 17 00:00:00 2001
|
||||
From: Jiri Pirko <jiri@resnulli.us>
|
||||
Date: Wed, 6 Nov 2013 17:52:19 +0100
|
||||
Subject: [PATCH 1/2] ip6_output: fragment outgoing reassembled skb properly
|
||||
|
||||
If reassembled packet would fit into outdev MTU, it is not fragmented
|
||||
according the original frag size and it is send as single big packet.
|
||||
|
||||
The second case is if skb is gso. In that case fragmentation does not happen
|
||||
according to the original frag size.
|
||||
|
||||
This patch fixes these.
|
||||
|
||||
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/ipv6/ip6_output.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
|
||||
index 5b25f85..f80f2fa 100644
|
||||
--- a/net/ipv6/ip6_output.c
|
||||
+++ b/net/ipv6/ip6_output.c
|
||||
@@ -150,7 +150,8 @@ static int ip6_finish_output2(struct sk_buff *skb)
|
||||
static int ip6_finish_output(struct sk_buff *skb)
|
||||
{
|
||||
if ((skb->len > ip6_skb_dst_mtu(skb) && !skb_is_gso(skb)) ||
|
||||
- dst_allfrag(skb_dst(skb)))
|
||||
+ dst_allfrag(skb_dst(skb)) ||
|
||||
+ (IP6CB(skb)->frag_max_size && skb->len > IP6CB(skb)->frag_max_size))
|
||||
return ip6_fragment(skb, ip6_finish_output2);
|
||||
else
|
||||
return ip6_finish_output2(skb);
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,35 +0,0 @@
|
||||
From 8ca95995e64f5d270889badb3e449dca91106a2b Mon Sep 17 00:00:00 2001
|
||||
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Date: Sun, 15 Sep 2013 11:37:17 +0300
|
||||
Subject: [PATCH] iwlwifi: don't WARN on host commands sent when firmware is dead
|
||||
|
||||
This triggers automatic bug reports and add no valuable
|
||||
information. Print a simple error instead and drop the
|
||||
host command.
|
||||
|
||||
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/iwl-trans.h | 6 ++++--
|
||||
1 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h b/drivers/net/wireless/iwlwifi/iwl-trans.h
|
||||
index dd57a36..80b4750 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-trans.h
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-trans.h
|
||||
@@ -601,8 +601,10 @@ static inline int iwl_trans_send_cmd(struct iwl_trans *trans,
|
||||
{
|
||||
int ret;
|
||||
|
||||
- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE,
|
||||
- "%s bad state = %d", __func__, trans->state);
|
||||
+ if (trans->state != IWL_TRANS_FW_ALIVE) {
|
||||
+ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state);
|
||||
+ return -EIO;
|
||||
+ }
|
||||
|
||||
if (!(cmd->flags & CMD_ASYNC))
|
||||
lock_map_acquire_read(&trans->sync_cmd_lockdep_map);
|
||||
--
|
||||
1.7.1
|
||||
|
@ -1,499 +0,0 @@
|
||||
Bugzilla: 1015905
|
||||
Upstream-status: 3.13 (should hit stable)
|
||||
|
||||
From 5c0df04613dd39fba5d2a43eaf90a2dc1dcd8899 Mon Sep 17 00:00:00 2001
|
||||
From: Jiri Pirko <jiri@resnulli.us>
|
||||
Date: Wed, 6 Nov 2013 17:52:20 +0100
|
||||
Subject: [PATCH 2/2] netfilter: push reasm skb through instead of original
|
||||
frag skbs
|
||||
|
||||
Pushing original fragments through causes several problems. For example
|
||||
for matching, frags may not be matched correctly. Take following
|
||||
example:
|
||||
|
||||
<example>
|
||||
On HOSTA do:
|
||||
ip6tables -I INPUT -p icmpv6 -j DROP
|
||||
ip6tables -I INPUT -p icmpv6 -m icmp6 --icmpv6-type 128 -j ACCEPT
|
||||
|
||||
and on HOSTB you do:
|
||||
ping6 HOSTA -s2000 (MTU is 1500)
|
||||
|
||||
Incoming echo requests will be filtered out on HOSTA. This issue does
|
||||
not occur with smaller packets than MTU (where fragmentation does not happen)
|
||||
</example>
|
||||
|
||||
As was discussed previously, the only correct solution seems to be to use
|
||||
reassembled skb instead of separete frags. Doing this has positive side
|
||||
effects in reducing sk_buff by one pointer (nfct_reasm) and also the reams
|
||||
dances in ipvs and conntrack can be removed.
|
||||
|
||||
Future plan is to remove net/ipv6/netfilter/nf_conntrack_reasm.c
|
||||
entirely and use code in net/ipv6/reassembly.c instead.
|
||||
|
||||
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
|
||||
Acked-by: Julian Anastasov <ja@ssi.bg>
|
||||
Signed-off-by: Marcelo Ricardo Leitner <mleitner@redhat.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
Conflicts:
|
||||
include/net/netfilter/ipv6/nf_defrag_ipv6.h
|
||||
net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
|
||||
net/ipv6/netfilter/nf_defrag_ipv6_hooks.c
|
||||
net/netfilter/ipvs/ip_vs_core.c
|
||||
---
|
||||
include/linux/skbuff.h | 32 ---------------
|
||||
include/net/ip_vs.h | 32 +--------------
|
||||
include/net/netfilter/ipv6/nf_defrag_ipv6.h | 5 +--
|
||||
net/core/skbuff.c | 3 --
|
||||
net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c | 54 +------------------------
|
||||
net/ipv6/netfilter/nf_conntrack_reasm.c | 19 +--------
|
||||
net/ipv6/netfilter/nf_defrag_ipv6_hooks.c | 7 +++-
|
||||
net/netfilter/ipvs/ip_vs_core.c | 55 +-------------------------
|
||||
net/netfilter/ipvs/ip_vs_pe_sip.c | 8 +---
|
||||
9 files changed, 13 insertions(+), 202 deletions(-)
|
||||
|
||||
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
|
||||
index 6bd165b..37b4517 100644
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -333,11 +333,6 @@ typedef unsigned int sk_buff_data_t;
|
||||
typedef unsigned char *sk_buff_data_t;
|
||||
#endif
|
||||
|
||||
-#if defined(CONFIG_NF_DEFRAG_IPV4) || defined(CONFIG_NF_DEFRAG_IPV4_MODULE) || \
|
||||
- defined(CONFIG_NF_DEFRAG_IPV6) || defined(CONFIG_NF_DEFRAG_IPV6_MODULE)
|
||||
-#define NET_SKBUFF_NF_DEFRAG_NEEDED 1
|
||||
-#endif
|
||||
-
|
||||
/**
|
||||
* struct sk_buff - socket buffer
|
||||
* @next: Next buffer in list
|
||||
@@ -370,7 +365,6 @@ typedef unsigned char *sk_buff_data_t;
|
||||
* @protocol: Packet protocol from driver
|
||||
* @destructor: Destruct function
|
||||
* @nfct: Associated connection, if any
|
||||
- * @nfct_reasm: netfilter conntrack re-assembly pointer
|
||||
* @nf_bridge: Saved data about a bridged frame - see br_netfilter.c
|
||||
* @skb_iif: ifindex of device we arrived on
|
||||
* @tc_index: Traffic control index
|
||||
@@ -459,9 +453,6 @@ struct sk_buff {
|
||||
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
|
||||
struct nf_conntrack *nfct;
|
||||
#endif
|
||||
-#ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
|
||||
- struct sk_buff *nfct_reasm;
|
||||
-#endif
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
struct nf_bridge_info *nf_bridge;
|
||||
#endif
|
||||
@@ -2603,18 +2594,6 @@ static inline void nf_conntrack_get(struct nf_conntrack *nfct)
|
||||
atomic_inc(&nfct->use);
|
||||
}
|
||||
#endif
|
||||
-#ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
|
||||
-static inline void nf_conntrack_get_reasm(struct sk_buff *skb)
|
||||
-{
|
||||
- if (skb)
|
||||
- atomic_inc(&skb->users);
|
||||
-}
|
||||
-static inline void nf_conntrack_put_reasm(struct sk_buff *skb)
|
||||
-{
|
||||
- if (skb)
|
||||
- kfree_skb(skb);
|
||||
-}
|
||||
-#endif
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
static inline void nf_bridge_put(struct nf_bridge_info *nf_bridge)
|
||||
{
|
||||
@@ -2633,10 +2612,6 @@ static inline void nf_reset(struct sk_buff *skb)
|
||||
nf_conntrack_put(skb->nfct);
|
||||
skb->nfct = NULL;
|
||||
#endif
|
||||
-#ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
|
||||
- nf_conntrack_put_reasm(skb->nfct_reasm);
|
||||
- skb->nfct_reasm = NULL;
|
||||
-#endif
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
nf_bridge_put(skb->nf_bridge);
|
||||
skb->nf_bridge = NULL;
|
||||
@@ -2658,10 +2633,6 @@ static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src)
|
||||
nf_conntrack_get(src->nfct);
|
||||
dst->nfctinfo = src->nfctinfo;
|
||||
#endif
|
||||
-#ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
|
||||
- dst->nfct_reasm = src->nfct_reasm;
|
||||
- nf_conntrack_get_reasm(src->nfct_reasm);
|
||||
-#endif
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
dst->nf_bridge = src->nf_bridge;
|
||||
nf_bridge_get(src->nf_bridge);
|
||||
@@ -2673,9 +2644,6 @@ static inline void nf_copy(struct sk_buff *dst, const struct sk_buff *src)
|
||||
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
|
||||
nf_conntrack_put(dst->nfct);
|
||||
#endif
|
||||
-#ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
|
||||
- nf_conntrack_put_reasm(dst->nfct_reasm);
|
||||
-#endif
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
nf_bridge_put(dst->nf_bridge);
|
||||
#endif
|
||||
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
|
||||
index f0d70f0..ff21521 100644
|
||||
--- a/include/net/ip_vs.h
|
||||
+++ b/include/net/ip_vs.h
|
||||
@@ -109,7 +109,6 @@ extern int ip_vs_conn_tab_size;
|
||||
struct ip_vs_iphdr {
|
||||
__u32 len; /* IPv4 simply where L4 starts
|
||||
IPv6 where L4 Transport Header starts */
|
||||
- __u32 thoff_reasm; /* Transport Header Offset in nfct_reasm skb */
|
||||
__u16 fragoffs; /* IPv6 fragment offset, 0 if first frag (or not frag)*/
|
||||
__s16 protocol;
|
||||
__s32 flags;
|
||||
@@ -117,34 +116,12 @@ struct ip_vs_iphdr {
|
||||
union nf_inet_addr daddr;
|
||||
};
|
||||
|
||||
-/* Dependency to module: nf_defrag_ipv6 */
|
||||
-#if defined(CONFIG_NF_DEFRAG_IPV6) || defined(CONFIG_NF_DEFRAG_IPV6_MODULE)
|
||||
-static inline struct sk_buff *skb_nfct_reasm(const struct sk_buff *skb)
|
||||
-{
|
||||
- return skb->nfct_reasm;
|
||||
-}
|
||||
-static inline void *frag_safe_skb_hp(const struct sk_buff *skb, int offset,
|
||||
- int len, void *buffer,
|
||||
- const struct ip_vs_iphdr *ipvsh)
|
||||
-{
|
||||
- if (unlikely(ipvsh->fragoffs && skb_nfct_reasm(skb)))
|
||||
- return skb_header_pointer(skb_nfct_reasm(skb),
|
||||
- ipvsh->thoff_reasm, len, buffer);
|
||||
-
|
||||
- return skb_header_pointer(skb, offset, len, buffer);
|
||||
-}
|
||||
-#else
|
||||
-static inline struct sk_buff *skb_nfct_reasm(const struct sk_buff *skb)
|
||||
-{
|
||||
- return NULL;
|
||||
-}
|
||||
static inline void *frag_safe_skb_hp(const struct sk_buff *skb, int offset,
|
||||
int len, void *buffer,
|
||||
const struct ip_vs_iphdr *ipvsh)
|
||||
{
|
||||
return skb_header_pointer(skb, offset, len, buffer);
|
||||
}
|
||||
-#endif
|
||||
|
||||
static inline void
|
||||
ip_vs_fill_ip4hdr(const void *nh, struct ip_vs_iphdr *iphdr)
|
||||
@@ -171,19 +148,12 @@ ip_vs_fill_iph_skb(int af, const struct sk_buff *skb, struct ip_vs_iphdr *iphdr)
|
||||
(struct ipv6hdr *)skb_network_header(skb);
|
||||
iphdr->saddr.in6 = iph->saddr;
|
||||
iphdr->daddr.in6 = iph->daddr;
|
||||
- /* ipv6_find_hdr() updates len, flags, thoff_reasm */
|
||||
- iphdr->thoff_reasm = 0;
|
||||
+ /* ipv6_find_hdr() updates len, flags */
|
||||
iphdr->len = 0;
|
||||
iphdr->flags = 0;
|
||||
iphdr->protocol = ipv6_find_hdr(skb, &iphdr->len, -1,
|
||||
&iphdr->fragoffs,
|
||||
&iphdr->flags);
|
||||
- /* get proto from re-assembled packet and it's offset */
|
||||
- if (skb_nfct_reasm(skb))
|
||||
- iphdr->protocol = ipv6_find_hdr(skb_nfct_reasm(skb),
|
||||
- &iphdr->thoff_reasm,
|
||||
- -1, NULL, NULL);
|
||||
-
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
diff --git a/include/net/netfilter/ipv6/nf_defrag_ipv6.h b/include/net/netfilter/ipv6/nf_defrag_ipv6.h
|
||||
index fd79c9a..17920d8 100644
|
||||
--- a/include/net/netfilter/ipv6/nf_defrag_ipv6.h
|
||||
+++ b/include/net/netfilter/ipv6/nf_defrag_ipv6.h
|
||||
@@ -6,10 +6,7 @@ extern void nf_defrag_ipv6_enable(void);
|
||||
extern int nf_ct_frag6_init(void);
|
||||
extern void nf_ct_frag6_cleanup(void);
|
||||
extern struct sk_buff *nf_ct_frag6_gather(struct sk_buff *skb, u32 user);
|
||||
-extern void nf_ct_frag6_output(unsigned int hooknum, struct sk_buff *skb,
|
||||
- struct net_device *in,
|
||||
- struct net_device *out,
|
||||
- int (*okfn)(struct sk_buff *));
|
||||
+extern void nf_ct_frag6_consume_orig(struct sk_buff *skb);
|
||||
|
||||
struct inet_frags_ctl;
|
||||
|
||||
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
|
||||
index 2c3d0f5..a75022e 100644
|
||||
--- a/net/core/skbuff.c
|
||||
+++ b/net/core/skbuff.c
|
||||
@@ -580,9 +580,6 @@ static void skb_release_head_state(struct sk_buff *skb)
|
||||
#if IS_ENABLED(CONFIG_NF_CONNTRACK)
|
||||
nf_conntrack_put(skb->nfct);
|
||||
#endif
|
||||
-#ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
|
||||
- nf_conntrack_put_reasm(skb->nfct_reasm);
|
||||
-#endif
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
nf_bridge_put(skb->nf_bridge);
|
||||
#endif
|
||||
diff --git a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
|
||||
index c9b6a6e..97cd750 100644
|
||||
--- a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
|
||||
+++ b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
|
||||
@@ -172,63 +172,13 @@ out:
|
||||
return nf_conntrack_confirm(skb);
|
||||
}
|
||||
|
||||
-static unsigned int __ipv6_conntrack_in(struct net *net,
|
||||
- unsigned int hooknum,
|
||||
- struct sk_buff *skb,
|
||||
- const struct net_device *in,
|
||||
- const struct net_device *out,
|
||||
- int (*okfn)(struct sk_buff *))
|
||||
-{
|
||||
- struct sk_buff *reasm = skb->nfct_reasm;
|
||||
- const struct nf_conn_help *help;
|
||||
- struct nf_conn *ct;
|
||||
- enum ip_conntrack_info ctinfo;
|
||||
-
|
||||
- /* This packet is fragmented and has reassembled packet. */
|
||||
- if (reasm) {
|
||||
- /* Reassembled packet isn't parsed yet ? */
|
||||
- if (!reasm->nfct) {
|
||||
- unsigned int ret;
|
||||
-
|
||||
- ret = nf_conntrack_in(net, PF_INET6, hooknum, reasm);
|
||||
- if (ret != NF_ACCEPT)
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- /* Conntrack helpers need the entire reassembled packet in the
|
||||
- * POST_ROUTING hook. In case of unconfirmed connections NAT
|
||||
- * might reassign a helper, so the entire packet is also
|
||||
- * required.
|
||||
- */
|
||||
- ct = nf_ct_get(reasm, &ctinfo);
|
||||
- if (ct != NULL && !nf_ct_is_untracked(ct)) {
|
||||
- help = nfct_help(ct);
|
||||
- if ((help && help->helper) || !nf_ct_is_confirmed(ct)) {
|
||||
- nf_conntrack_get_reasm(reasm);
|
||||
- NF_HOOK_THRESH(NFPROTO_IPV6, hooknum, reasm,
|
||||
- (struct net_device *)in,
|
||||
- (struct net_device *)out,
|
||||
- okfn, NF_IP6_PRI_CONNTRACK + 1);
|
||||
- return NF_DROP_ERR(-ECANCELED);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- nf_conntrack_get(reasm->nfct);
|
||||
- skb->nfct = reasm->nfct;
|
||||
- skb->nfctinfo = reasm->nfctinfo;
|
||||
- return NF_ACCEPT;
|
||||
- }
|
||||
-
|
||||
- return nf_conntrack_in(net, PF_INET6, hooknum, skb);
|
||||
-}
|
||||
-
|
||||
static unsigned int ipv6_conntrack_in(unsigned int hooknum,
|
||||
struct sk_buff *skb,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *))
|
||||
{
|
||||
- return __ipv6_conntrack_in(dev_net(in), hooknum, skb, in, out, okfn);
|
||||
+ return nf_conntrack_in(dev_net(in), PF_INET6, hooknum, skb);
|
||||
}
|
||||
|
||||
static unsigned int ipv6_conntrack_local(unsigned int hooknum,
|
||||
@@ -242,7 +192,7 @@ static unsigned int ipv6_conntrack_local(unsigned int hooknum,
|
||||
net_notice_ratelimited("ipv6_conntrack_local: packet too short\n");
|
||||
return NF_ACCEPT;
|
||||
}
|
||||
- return __ipv6_conntrack_in(dev_net(out), hooknum, skb, in, out, okfn);
|
||||
+ return nf_conntrack_in(dev_net(out), PF_INET6, hooknum, skb);
|
||||
}
|
||||
|
||||
static struct nf_hook_ops ipv6_conntrack_ops[] __read_mostly = {
|
||||
diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
|
||||
index dffdc1a..253566a 100644
|
||||
--- a/net/ipv6/netfilter/nf_conntrack_reasm.c
|
||||
+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
|
||||
@@ -621,31 +621,16 @@ ret_orig:
|
||||
return skb;
|
||||
}
|
||||
|
||||
-void nf_ct_frag6_output(unsigned int hooknum, struct sk_buff *skb,
|
||||
- struct net_device *in, struct net_device *out,
|
||||
- int (*okfn)(struct sk_buff *))
|
||||
+void nf_ct_frag6_consume_orig(struct sk_buff *skb)
|
||||
{
|
||||
struct sk_buff *s, *s2;
|
||||
- unsigned int ret = 0;
|
||||
|
||||
for (s = NFCT_FRAG6_CB(skb)->orig; s;) {
|
||||
- nf_conntrack_put_reasm(s->nfct_reasm);
|
||||
- nf_conntrack_get_reasm(skb);
|
||||
- s->nfct_reasm = skb;
|
||||
-
|
||||
s2 = s->next;
|
||||
s->next = NULL;
|
||||
-
|
||||
- if (ret != -ECANCELED)
|
||||
- ret = NF_HOOK_THRESH(NFPROTO_IPV6, hooknum, s,
|
||||
- in, out, okfn,
|
||||
- NF_IP6_PRI_CONNTRACK_DEFRAG + 1);
|
||||
- else
|
||||
- kfree_skb(s);
|
||||
-
|
||||
+ consume_skb(s);
|
||||
s = s2;
|
||||
}
|
||||
- nf_conntrack_put_reasm(skb);
|
||||
}
|
||||
|
||||
static int nf_ct_net_init(struct net *net)
|
||||
diff --git a/net/ipv6/netfilter/nf_defrag_ipv6_hooks.c b/net/ipv6/netfilter/nf_defrag_ipv6_hooks.c
|
||||
index aacd121..581dd9e 100644
|
||||
--- a/net/ipv6/netfilter/nf_defrag_ipv6_hooks.c
|
||||
+++ b/net/ipv6/netfilter/nf_defrag_ipv6_hooks.c
|
||||
@@ -75,8 +75,11 @@ static unsigned int ipv6_defrag(unsigned int hooknum,
|
||||
if (reasm == skb)
|
||||
return NF_ACCEPT;
|
||||
|
||||
- nf_ct_frag6_output(hooknum, reasm, (struct net_device *)in,
|
||||
- (struct net_device *)out, okfn);
|
||||
+ nf_ct_frag6_consume_orig(reasm);
|
||||
+
|
||||
+ NF_HOOK_THRESH(NFPROTO_IPV6, hooknum, reasm,
|
||||
+ (struct net_device *) in, (struct net_device *) out,
|
||||
+ okfn, NF_IP6_PRI_CONNTRACK_DEFRAG + 1);
|
||||
|
||||
return NF_STOLEN;
|
||||
}
|
||||
diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
|
||||
index 4f69e83..1517b50 100644
|
||||
--- a/net/netfilter/ipvs/ip_vs_core.c
|
||||
+++ b/net/netfilter/ipvs/ip_vs_core.c
|
||||
@@ -1131,12 +1131,6 @@ ip_vs_out(unsigned int hooknum, struct sk_buff *skb, int af)
|
||||
ip_vs_fill_iph_skb(af, skb, &iph);
|
||||
#ifdef CONFIG_IP_VS_IPV6
|
||||
if (af == AF_INET6) {
|
||||
- if (!iph.fragoffs && skb_nfct_reasm(skb)) {
|
||||
- struct sk_buff *reasm = skb_nfct_reasm(skb);
|
||||
- /* Save fw mark for coming frags */
|
||||
- reasm->ipvs_property = 1;
|
||||
- reasm->mark = skb->mark;
|
||||
- }
|
||||
if (unlikely(iph.protocol == IPPROTO_ICMPV6)) {
|
||||
int related;
|
||||
int verdict = ip_vs_out_icmp_v6(skb, &related,
|
||||
@@ -1606,12 +1600,6 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af)
|
||||
|
||||
#ifdef CONFIG_IP_VS_IPV6
|
||||
if (af == AF_INET6) {
|
||||
- if (!iph.fragoffs && skb_nfct_reasm(skb)) {
|
||||
- struct sk_buff *reasm = skb_nfct_reasm(skb);
|
||||
- /* Save fw mark for coming frags. */
|
||||
- reasm->ipvs_property = 1;
|
||||
- reasm->mark = skb->mark;
|
||||
- }
|
||||
if (unlikely(iph.protocol == IPPROTO_ICMPV6)) {
|
||||
int related;
|
||||
int verdict = ip_vs_in_icmp_v6(skb, &related, hooknum,
|
||||
@@ -1663,9 +1651,8 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af)
|
||||
/* sorry, all this trouble for a no-hit :) */
|
||||
IP_VS_DBG_PKT(12, af, pp, skb, 0,
|
||||
"ip_vs_in: packet continues traversal as normal");
|
||||
- if (iph.fragoffs && !skb_nfct_reasm(skb)) {
|
||||
+ if (iph.fragoffs) {
|
||||
/* Fragment that couldn't be mapped to a conn entry
|
||||
- * and don't have any pointer to a reasm skb
|
||||
* is missing module nf_defrag_ipv6
|
||||
*/
|
||||
IP_VS_DBG_RL("Unhandled frag, load nf_defrag_ipv6\n");
|
||||
@@ -1748,38 +1735,6 @@ ip_vs_local_request4(unsigned int hooknum, struct sk_buff *skb,
|
||||
#ifdef CONFIG_IP_VS_IPV6
|
||||
|
||||
/*
|
||||
- * AF_INET6 fragment handling
|
||||
- * Copy info from first fragment, to the rest of them.
|
||||
- */
|
||||
-static unsigned int
|
||||
-ip_vs_preroute_frag6(unsigned int hooknum, struct sk_buff *skb,
|
||||
- const struct net_device *in,
|
||||
- const struct net_device *out,
|
||||
- int (*okfn)(struct sk_buff *))
|
||||
-{
|
||||
- struct sk_buff *reasm = skb_nfct_reasm(skb);
|
||||
- struct net *net;
|
||||
-
|
||||
- /* Skip if not a "replay" from nf_ct_frag6_output or first fragment.
|
||||
- * ipvs_property is set when checking first fragment
|
||||
- * in ip_vs_in() and ip_vs_out().
|
||||
- */
|
||||
- if (reasm)
|
||||
- IP_VS_DBG(2, "Fragment recv prop:%d\n", reasm->ipvs_property);
|
||||
- if (!reasm || !reasm->ipvs_property)
|
||||
- return NF_ACCEPT;
|
||||
-
|
||||
- net = skb_net(skb);
|
||||
- if (!net_ipvs(net)->enable)
|
||||
- return NF_ACCEPT;
|
||||
-
|
||||
- /* Copy stored fw mark, saved in ip_vs_{in,out} */
|
||||
- skb->mark = reasm->mark;
|
||||
-
|
||||
- return NF_ACCEPT;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
* AF_INET6 handler in NF_INET_LOCAL_IN chain
|
||||
* Schedule and forward packets from remote clients
|
||||
*/
|
||||
@@ -1916,14 +1871,6 @@ static struct nf_hook_ops ip_vs_ops[] __read_mostly = {
|
||||
.priority = 100,
|
||||
},
|
||||
#ifdef CONFIG_IP_VS_IPV6
|
||||
- /* After mangle & nat fetch 2:nd fragment and following */
|
||||
- {
|
||||
- .hook = ip_vs_preroute_frag6,
|
||||
- .owner = THIS_MODULE,
|
||||
- .pf = NFPROTO_IPV6,
|
||||
- .hooknum = NF_INET_PRE_ROUTING,
|
||||
- .priority = NF_IP6_PRI_NAT_DST + 1,
|
||||
- },
|
||||
/* After packet filtering, change source only for VS/NAT */
|
||||
{
|
||||
.hook = ip_vs_reply6,
|
||||
diff --git a/net/netfilter/ipvs/ip_vs_pe_sip.c b/net/netfilter/ipvs/ip_vs_pe_sip.c
|
||||
index 9ef22bd..bed5f70 100644
|
||||
--- a/net/netfilter/ipvs/ip_vs_pe_sip.c
|
||||
+++ b/net/netfilter/ipvs/ip_vs_pe_sip.c
|
||||
@@ -65,7 +65,6 @@ static int get_callid(const char *dptr, unsigned int dataoff,
|
||||
static int
|
||||
ip_vs_sip_fill_param(struct ip_vs_conn_param *p, struct sk_buff *skb)
|
||||
{
|
||||
- struct sk_buff *reasm = skb_nfct_reasm(skb);
|
||||
struct ip_vs_iphdr iph;
|
||||
unsigned int dataoff, datalen, matchoff, matchlen;
|
||||
const char *dptr;
|
||||
@@ -79,15 +78,10 @@ ip_vs_sip_fill_param(struct ip_vs_conn_param *p, struct sk_buff *skb)
|
||||
/* todo: IPv6 fragments:
|
||||
* I think this only should be done for the first fragment. /HS
|
||||
*/
|
||||
- if (reasm) {
|
||||
- skb = reasm;
|
||||
- dataoff = iph.thoff_reasm + sizeof(struct udphdr);
|
||||
- } else
|
||||
- dataoff = iph.len + sizeof(struct udphdr);
|
||||
+ dataoff = iph.len + sizeof(struct udphdr);
|
||||
|
||||
if (dataoff >= skb->len)
|
||||
return -EINVAL;
|
||||
- /* todo: Check if this will mess-up the reasm skb !!! /HS */
|
||||
retc = skb_linearize(skb);
|
||||
if (retc < 0)
|
||||
return retc;
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,64 +0,0 @@
|
||||
From 92eb77d0ffbaa71b501a0a8dabf09a351bf4267f Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Stone <daniel@fooishbar.org>
|
||||
Date: Thu, 31 Oct 2013 07:25:34 +0000
|
||||
Subject: Input: evdev - fall back to vmalloc for client event buffer
|
||||
|
||||
evdev always tries to allocate the event buffer for clients using
|
||||
kzalloc rather than vmalloc, presumably to avoid mapping overhead where
|
||||
possible. However, drivers like bcm5974, which claims support for
|
||||
reporting 16 fingers simultaneously, can have an extraordinarily large
|
||||
buffer. The resultant contiguous order-4 allocation attempt fails due
|
||||
to fragmentation, and the device is thus unusable until reboot.
|
||||
|
||||
Try kzalloc if we can to avoid the mapping overhead, but if that fails,
|
||||
fall back to vzalloc.
|
||||
|
||||
Signed-off-by: Daniel Stone <daniels@collabora.com>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
|
||||
index b6ded17..a06e125 100644
|
||||
--- a/drivers/input/evdev.c
|
||||
+++ b/drivers/input/evdev.c
|
||||
@@ -18,6 +18,8 @@
|
||||
#include <linux/poll.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/slab.h>
|
||||
+#include <linux/vmalloc.h>
|
||||
+#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/input/mt.h>
|
||||
@@ -369,7 +371,11 @@ static int evdev_release(struct inode *inode, struct file *file)
|
||||
mutex_unlock(&evdev->mutex);
|
||||
|
||||
evdev_detach_client(evdev, client);
|
||||
- kfree(client);
|
||||
+
|
||||
+ if (is_vmalloc_addr(client))
|
||||
+ vfree(client);
|
||||
+ else
|
||||
+ kfree(client);
|
||||
|
||||
evdev_close_device(evdev);
|
||||
|
||||
@@ -389,12 +395,14 @@ static int evdev_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct evdev *evdev = container_of(inode->i_cdev, struct evdev, cdev);
|
||||
unsigned int bufsize = evdev_compute_buffer_size(evdev->handle.dev);
|
||||
+ unsigned int size = sizeof(struct evdev_client) +
|
||||
+ bufsize * sizeof(struct input_event);
|
||||
struct evdev_client *client;
|
||||
int error;
|
||||
|
||||
- client = kzalloc(sizeof(struct evdev_client) +
|
||||
- bufsize * sizeof(struct input_event),
|
||||
- GFP_KERNEL);
|
||||
+ client = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);
|
||||
+ if (!client)
|
||||
+ client = vzalloc(size);
|
||||
if (!client)
|
||||
return -ENOMEM;
|
||||
|
||||
--
|
||||
cgit v0.9.2
|
@ -1,53 +0,0 @@
|
||||
Bugzilla: 967652
|
||||
Upstream-status: 3.13 (should hit stable)
|
||||
|
||||
From daf727225b8abfdfe424716abac3d15a3ac5626a Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Thu, 31 Oct 2013 23:05:24 +0100
|
||||
Subject: [PATCH] KVM: x86: fix emulation of "movzbl %bpl, %eax"
|
||||
|
||||
When I was looking at RHEL5.9's failure to start with
|
||||
unrestricted_guest=0/emulate_invalid_guest_state=1, I got it working with a
|
||||
slightly older tree than kvm.git. I now debugged the remaining failure,
|
||||
which was introduced by commit 660696d1 (KVM: X86 emulator: fix
|
||||
source operand decoding for 8bit mov[zs]x instructions, 2013-04-24)
|
||||
introduced a similar mis-emulation to the one in commit 8acb4207 (KVM:
|
||||
fix sil/dil/bpl/spl in the mod/rm fields, 2013-05-30). The incorrect
|
||||
decoding occurs in 8-bit movzx/movsx instructions whose 8-bit operand
|
||||
is sil/dil/bpl/spl.
|
||||
|
||||
Needless to say, "movzbl %bpl, %eax" does occur in RHEL5.9's decompression
|
||||
prolog, just a handful of instructions before finally giving control to
|
||||
the decompressed vmlinux and getting out of the invalid guest state.
|
||||
|
||||
Because OpMem8 bypasses decode_modrm, the same handling of the REX prefix
|
||||
must be applied to OpMem8.
|
||||
|
||||
Reported-by: Michele Baldessari <michele@redhat.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Cc: Gleb Natapov <gleb@redhat.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Signed-off-by: Gleb Natapov <gleb@redhat.com>
|
||||
---
|
||||
arch/x86/kvm/emulate.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
|
||||
index 16c037e..282d28c 100644
|
||||
--- a/arch/x86/kvm/emulate.c
|
||||
+++ b/arch/x86/kvm/emulate.c
|
||||
@@ -4117,7 +4117,10 @@ static int decode_operand(struct x86_emulate_ctxt *ctxt, struct operand *op,
|
||||
case OpMem8:
|
||||
ctxt->memop.bytes = 1;
|
||||
if (ctxt->memop.type == OP_REG) {
|
||||
- ctxt->memop.addr.reg = decode_register(ctxt, ctxt->modrm_rm, 1);
|
||||
+ int highbyte_regs = ctxt->rex_prefix == 0;
|
||||
+
|
||||
+ ctxt->memop.addr.reg = decode_register(ctxt, ctxt->modrm_rm,
|
||||
+ highbyte_regs);
|
||||
fetch_register_operand(&ctxt->memop);
|
||||
}
|
||||
goto mem_common;
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 7673be51f16e978a438bca8ac1bf9e939b7ed7a6 Mon Sep 17 00:00:00 2001
|
||||
From: Yunkang Tang <yunkang.tang@cn.alps.com>
|
||||
Date: Thu, 24 Oct 2013 13:39:08 +0800
|
||||
Subject: [PATCH] Support for Dell XT2 model
|
||||
|
||||
Signed-off-by: Yunkang Tang <yunkang.tang@cn.alps.com>
|
||||
---
|
||||
drivers/input/mouse/alps.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
|
||||
index ca7a26f..24b3626 100644
|
||||
--- a/drivers/input/mouse/alps.c
|
||||
+++ b/drivers/input/mouse/alps.c
|
||||
@@ -103,6 +103,7 @@ static const struct alps_model_info alps_model_data[] = {
|
||||
/* Dell Latitude E5500, E6400, E6500, Precision M4400 */
|
||||
{ { 0x62, 0x02, 0x14 }, 0x00, ALPS_PROTO_V2, 0xcf, 0xcf,
|
||||
ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED },
|
||||
+ { { 0x73, 0x00, 0x14 }, 0x00, ALPS_PROTO_V2, 0xcf, 0xcf, ALPS_DUALPOINT }, /* Dell XT2 */
|
||||
{ { 0x73, 0x02, 0x50 }, 0x00, ALPS_PROTO_V2, 0xcf, 0xcf, ALPS_FOUR_BUTTONS }, /* Dell Vostro 1400 */
|
||||
{ { 0x52, 0x01, 0x14 }, 0x00, ALPS_PROTO_V2, 0xff, 0xff,
|
||||
ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED }, /* Toshiba Tecra A11-11L */
|
||||
--
|
||||
1.8.1.2
|
||||
|
2580
am335x-bone.patch
2580
am335x-bone.patch
File diff suppressed because it is too large
Load Diff
2468
arm-am33xx-arm-soc-upstream.patch
Normal file
2468
arm-am33xx-arm-soc-upstream.patch
Normal file
File diff suppressed because it is too large
Load Diff
610
arm-am33xx-bblack.patch
Normal file
610
arm-am33xx-bblack.patch
Normal file
@ -0,0 +1,610 @@
|
||||
Bugzilla: 1012025
|
||||
Upstream-status: In beagle github repository https://github.com/beagleboard/kernel
|
||||
|
||||
From 82fe302f565e00cfde3e96c6132df93b39525e7b Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Zabel <p.zabel@pengutronix.de>
|
||||
Date: Tue, 28 May 2013 17:06:15 +0200
|
||||
Subject: [PATCH] reset: Add driver for gpio-controlled reset pins
|
||||
|
||||
This driver implements a reset controller device that toggle a gpio
|
||||
connected to a reset pin of a peripheral IC. The delay between assertion
|
||||
and de-assertion of the reset signal can be configured via device tree.
|
||||
|
||||
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
|
||||
Reviewed-by: Stephen Warren <swarren@nvidia.com>
|
||||
---
|
||||
.../devicetree/bindings/reset/gpio-reset.txt | 35 +++++
|
||||
drivers/reset/Kconfig | 11 ++
|
||||
drivers/reset/Makefile | 1 +
|
||||
drivers/reset/gpio-reset.c | 169 +++++++++++++++++++++
|
||||
4 files changed, 216 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/reset/gpio-reset.txt
|
||||
create mode 100644 drivers/reset/gpio-reset.c
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/reset/gpio-reset.txt b/Documentation/devicetree/bindings/reset/gpio-reset.txt
|
||||
new file mode 100644
|
||||
index 0000000..bca5348
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/reset/gpio-reset.txt
|
||||
@@ -0,0 +1,35 @@
|
||||
+GPIO reset controller
|
||||
+=====================
|
||||
+
|
||||
+A GPIO reset controller controls a single GPIO that is connected to the reset
|
||||
+pin of a peripheral IC. Please also refer to reset.txt in this directory for
|
||||
+common reset controller binding usage.
|
||||
+
|
||||
+Required properties:
|
||||
+- compatible: Should be "gpio-reset"
|
||||
+- reset-gpios: A gpio used as reset line. The gpio specifier for this property
|
||||
+ depends on the gpio controller that provides the gpio.
|
||||
+- #reset-cells: 0, see below
|
||||
+
|
||||
+Optional properties:
|
||||
+- reset-delay-us: delay in microseconds. The gpio reset line will be asserted for
|
||||
+ this duration to reset.
|
||||
+- initially-in-reset: boolean. If not set, the initial state should be a
|
||||
+ deasserted reset line. If this property exists, the
|
||||
+ reset line should be kept in reset.
|
||||
+
|
||||
+example:
|
||||
+
|
||||
+sii902x_reset: gpio-reset {
|
||||
+ compatible = "gpio-reset";
|
||||
+ reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
|
||||
+ reset-delay-us = <10000>;
|
||||
+ initially-in-reset;
|
||||
+ #reset-cells = <0>;
|
||||
+};
|
||||
+
|
||||
+/* Device with nRESET pin connected to GPIO5_0 */
|
||||
+sii902x@39 {
|
||||
+ /* ... */
|
||||
+ resets = <&sii902x_reset>; /* active-low GPIO5_0, 10 ms delay */
|
||||
+};
|
||||
diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
|
||||
index c9d04f7..1a862df 100644
|
||||
--- a/drivers/reset/Kconfig
|
||||
+++ b/drivers/reset/Kconfig
|
||||
@@ -11,3 +11,14 @@ menuconfig RESET_CONTROLLER
|
||||
via GPIOs or SoC-internal reset controller modules.
|
||||
|
||||
If unsure, say no.
|
||||
+
|
||||
+if RESET_CONTROLLER
|
||||
+
|
||||
+config RESET_GPIO
|
||||
+ tristate "GPIO reset controller support"
|
||||
+ depends on GPIOLIB && OF
|
||||
+ help
|
||||
+ This driver provides support for reset lines that are controlled
|
||||
+ directly by GPIOs.
|
||||
+
|
||||
+endif
|
||||
diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
|
||||
index 1e2d83f..b854f20 100644
|
||||
--- a/drivers/reset/Makefile
|
||||
+++ b/drivers/reset/Makefile
|
||||
@@ -1 +1,2 @@
|
||||
obj-$(CONFIG_RESET_CONTROLLER) += core.o
|
||||
+obj-$(CONFIG_RESET_GPIO) += gpio-reset.o
|
||||
diff --git a/drivers/reset/gpio-reset.c b/drivers/reset/gpio-reset.c
|
||||
new file mode 100644
|
||||
index 0000000..acc1076
|
||||
--- /dev/null
|
||||
+++ b/drivers/reset/gpio-reset.c
|
||||
@@ -0,0 +1,169 @@
|
||||
+/*
|
||||
+ * GPIO Reset Controller driver
|
||||
+ *
|
||||
+ * Copyright 2013 Philipp Zabel, Pengutronix
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ */
|
||||
+#include <linux/delay.h>
|
||||
+#include <linux/err.h>
|
||||
+#include <linux/gpio.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of_gpio.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+#include <linux/reset-controller.h>
|
||||
+
|
||||
+struct gpio_reset_data {
|
||||
+ struct reset_controller_dev rcdev;
|
||||
+ unsigned int gpio;
|
||||
+ bool active_low;
|
||||
+ u32 delay_us;
|
||||
+};
|
||||
+
|
||||
+static void __gpio_reset_set(struct reset_controller_dev *rcdev, int asserted)
|
||||
+{
|
||||
+ struct gpio_reset_data *drvdata = container_of(rcdev,
|
||||
+ struct gpio_reset_data, rcdev);
|
||||
+ int value = asserted;
|
||||
+
|
||||
+ if (drvdata->active_low)
|
||||
+ value = !value;
|
||||
+
|
||||
+ gpio_set_value(drvdata->gpio, value);
|
||||
+}
|
||||
+
|
||||
+static int gpio_reset(struct reset_controller_dev *rcdev, unsigned long id)
|
||||
+{
|
||||
+ struct gpio_reset_data *drvdata = container_of(rcdev,
|
||||
+ struct gpio_reset_data, rcdev);
|
||||
+
|
||||
+ if (drvdata->delay_us < 0)
|
||||
+ return -ENOSYS;
|
||||
+
|
||||
+ __gpio_reset_set(rcdev, 1);
|
||||
+ udelay(drvdata->delay_us);
|
||||
+ __gpio_reset_set(rcdev, 0);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int gpio_reset_assert(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
+{
|
||||
+ __gpio_reset_set(rcdev, 1);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int gpio_reset_deassert(struct reset_controller_dev *rcdev,
|
||||
+ unsigned long id)
|
||||
+{
|
||||
+ __gpio_reset_set(rcdev, 0);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct reset_control_ops gpio_reset_ops = {
|
||||
+ .reset = gpio_reset,
|
||||
+ .assert = gpio_reset_assert,
|
||||
+ .deassert = gpio_reset_deassert,
|
||||
+};
|
||||
+
|
||||
+static int of_gpio_reset_xlate(struct reset_controller_dev *rcdev,
|
||||
+ const struct of_phandle_args *reset_spec)
|
||||
+{
|
||||
+ if (WARN_ON(reset_spec->args_count != 0))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int gpio_reset_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct device_node *np = pdev->dev.of_node;
|
||||
+ struct gpio_reset_data *drvdata;
|
||||
+ enum of_gpio_flags flags;
|
||||
+ unsigned long gpio_flags;
|
||||
+ bool initially_in_reset;
|
||||
+ int ret;
|
||||
+
|
||||
+ drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL);
|
||||
+ if (drvdata == NULL)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ if (of_gpio_named_count(np, "reset-gpios") != 1)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ drvdata->gpio = of_get_named_gpio_flags(np, "reset-gpios", 0, &flags);
|
||||
+ if (drvdata->gpio == -EPROBE_DEFER) {
|
||||
+ return drvdata->gpio;
|
||||
+ } else if (!gpio_is_valid(drvdata->gpio)) {
|
||||
+ dev_err(&pdev->dev, "invalid reset gpio: %d\n", drvdata->gpio);
|
||||
+ return drvdata->gpio;
|
||||
+ }
|
||||
+
|
||||
+ drvdata->active_low = flags & OF_GPIO_ACTIVE_LOW;
|
||||
+
|
||||
+ ret = of_property_read_u32(np, "reset-delay-us", &drvdata->delay_us);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ initially_in_reset = of_property_read_bool(np, "initially-in-reset");
|
||||
+ if (drvdata->active_low ^ initially_in_reset)
|
||||
+ gpio_flags = GPIOF_OUT_INIT_HIGH;
|
||||
+ else
|
||||
+ gpio_flags = GPIOF_OUT_INIT_LOW;
|
||||
+
|
||||
+ ret = devm_gpio_request_one(&pdev->dev, drvdata->gpio, gpio_flags, NULL);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(&pdev->dev, "failed to request gpio %d: %d\n",
|
||||
+ drvdata->gpio, ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ drvdata->rcdev.of_node = np;
|
||||
+ drvdata->rcdev.owner = THIS_MODULE;
|
||||
+ drvdata->rcdev.nr_resets = 1;
|
||||
+ drvdata->rcdev.ops = &gpio_reset_ops;
|
||||
+ drvdata->rcdev.of_xlate = of_gpio_reset_xlate;
|
||||
+ reset_controller_register(&drvdata->rcdev);
|
||||
+
|
||||
+ platform_set_drvdata(pdev, drvdata);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int gpio_reset_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct gpio_reset_data *drvdata = platform_get_drvdata(pdev);
|
||||
+
|
||||
+ reset_controller_unregister(&drvdata->rcdev);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct of_device_id gpio_reset_dt_ids[] = {
|
||||
+ { .compatible = "gpio-reset" },
|
||||
+ { }
|
||||
+};
|
||||
+
|
||||
+static struct platform_driver gpio_reset_driver = {
|
||||
+ .probe = gpio_reset_probe,
|
||||
+ .remove = gpio_reset_remove,
|
||||
+ .driver = {
|
||||
+ .name = "gpio-reset",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .of_match_table = of_match_ptr(gpio_reset_dt_ids),
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(gpio_reset_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("Philipp Zabel <p.zabel@pengutronix.de>");
|
||||
+MODULE_DESCRIPTION("gpio reset controller");
|
||||
+MODULE_LICENSE("GPL");
|
||||
+MODULE_ALIAS("platform:gpio-reset");
|
||||
+MODULE_DEVICE_TABLE(of, gpio_reset_dt_ids);
|
||||
--
|
||||
1.8.2.1
|
||||
|
||||
From 03664ac63b20b55af9522449bbad048476d259d5 Mon Sep 17 00:00:00 2001
|
||||
From: Joel Fernandes <joelf@ti.com>
|
||||
Date: Wed, 3 Jul 2013 17:29:44 -0500
|
||||
Subject: [PATCH 2/2] sound: soc: soc-dmaengine-pcm: Add support for new
|
||||
DMAEngine request API
|
||||
|
||||
Formerly these resources were coming HWMOD on OMAP-like SoCs. With the
|
||||
impending removal of HWMOD data, drivers are being converted to use the
|
||||
"of-dma" method of requesting DMA channels which from DT and can be obtained
|
||||
using the dma_request_slave_channel API. Add support to the soc-dmaengine-pcm
|
||||
helpers so that we can fetch and open channels using this method.
|
||||
|
||||
Signed-off-by: Joel Fernandes <joelf@ti.com>
|
||||
---
|
||||
sound/core/pcm_dmaengine.c | 22 ++++++++++++++++++++++
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
diff --git a/sound/core/pcm_dmaengine.c b/sound/core/pcm_dmaengine.c
|
||||
index aa924d9..461fe4f 100644
|
||||
--- a/sound/core/pcm_dmaengine.c
|
||||
+++ b/sound/core/pcm_dmaengine.c
|
||||
@@ -276,6 +276,16 @@ struct dma_chan *snd_dmaengine_pcm_request_channel(dma_filter_fn filter_fn,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_request_channel);
|
||||
|
||||
+struct dma_chan *snd_dmaengine_pcm_request_slave_channel(
|
||||
+ struct snd_pcm_substream *substream, char *name)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct device *dev = snd_soc_dai_get_drvdata(rtd->cpu_dai);
|
||||
+
|
||||
+ return dma_request_slave_channel(dev, name);
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_request_slave_channel);
|
||||
+
|
||||
/**
|
||||
* snd_dmaengine_pcm_open - Open a dmaengine based PCM substream
|
||||
* @substream: PCM substream
|
||||
@@ -334,6 +344,18 @@ int snd_dmaengine_pcm_open_request_chan(struct snd_pcm_substream *substream,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_open_request_chan);
|
||||
|
||||
+int snd_dmaengine_pcm_open_request_slave_chan(struct snd_pcm_substream *substream, char *name)
|
||||
+{
|
||||
+ if(substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
+ return snd_dmaengine_pcm_open(substream,
|
||||
+ snd_dmaengine_pcm_request_slave_channel(substream, "tx"));
|
||||
+ } else {
|
||||
+ return snd_dmaengine_pcm_open(substream,
|
||||
+ snd_dmaengine_pcm_request_slave_channel(substream, "rx"));
|
||||
+ }
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_open_request_slave_chan);
|
||||
+
|
||||
/**
|
||||
* snd_dmaengine_pcm_close - Close a dmaengine based PCM substream
|
||||
* @substream: PCM substream
|
||||
--
|
||||
1.8.4.rc3
|
||||
|
||||
From ae38683badc8c80b29ccc8aa4e059f900b603551 Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
Date: Fri, 26 Oct 2012 15:48:00 +0300
|
||||
Subject: [PATCH 1/2] omap-hsmmc: Correct usage of of_find_node_by_name
|
||||
|
||||
of_find_node_by_name expect to have the parent node reference taken.
|
||||
---
|
||||
drivers/mmc/host/omap_hsmmc.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
|
||||
index 6ac63df..f5b660c 100644
|
||||
--- a/drivers/mmc/host/omap_hsmmc.c
|
||||
+++ b/drivers/mmc/host/omap_hsmmc.c
|
||||
@@ -1893,6 +1893,16 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
|
||||
* as we want. */
|
||||
mmc->max_segs = 1024;
|
||||
|
||||
+ /* Eventually we should get our max_segs limitation for EDMA by
|
||||
+ * querying the dmaengine API */
|
||||
+ if (pdev->dev.of_node) {
|
||||
+ struct device_node *parent = of_node_get(pdev->dev.of_node->parent);
|
||||
+ struct device_node *node;
|
||||
+ node = of_find_node_by_name(parent, "edma");
|
||||
+ if (node)
|
||||
+ mmc->max_segs = 16;
|
||||
+ }
|
||||
+
|
||||
mmc->max_blk_size = 512; /* Block Length at max can be 1024 */
|
||||
mmc->max_blk_count = 0xFFFF; /* No. of Blocks is 16 bits */
|
||||
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
|
||||
--
|
||||
1.8.2.1
|
||||
|
||||
From 5d93a65cfc4ff6aaf78ab49f71daa2a644ea2ace Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
Date: Fri, 30 Nov 2012 12:18:16 +0200
|
||||
Subject: [PATCH 2/2] omap_hsmmc: Add reset gpio
|
||||
|
||||
Add a gpio property for controlling reset of the mmc device.
|
||||
eMMC on the beaglebone black requires it.
|
||||
|
||||
Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
---
|
||||
drivers/mmc/host/omap_hsmmc.c | 40 +++++++++++++++++++++++++++++++++-
|
||||
include/linux/platform_data/mmc-omap.h | 3 +++
|
||||
2 files changed, 42 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
|
||||
index f5b660c..1bdb90f 100644
|
||||
--- a/drivers/mmc/host/omap_hsmmc.c
|
||||
+++ b/drivers/mmc/host/omap_hsmmc.c
|
||||
@@ -41,6 +41,8 @@
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/platform_data/mmc-omap.h>
|
||||
+#include <linux/pinctrl/consumer.h>
|
||||
+#include <linux/err.h>
|
||||
|
||||
/* OMAP HSMMC Host Controller Registers */
|
||||
#define OMAP_HSMMC_SYSSTATUS 0x0014
|
||||
@@ -392,6 +394,7 @@ static inline int omap_hsmmc_have_reg(void)
|
||||
static int omap_hsmmc_gpio_init(struct omap_mmc_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
+ unsigned long flags;
|
||||
|
||||
if (gpio_is_valid(pdata->slots[0].switch_pin)) {
|
||||
if (pdata->slots[0].cover)
|
||||
@@ -421,6 +424,24 @@ static int omap_hsmmc_gpio_init(struct omap_mmc_platform_data *pdata)
|
||||
} else
|
||||
pdata->slots[0].gpio_wp = -EINVAL;
|
||||
|
||||
+ if (gpio_is_valid(pdata->slots[0].gpio_reset)) {
|
||||
+ flags = pdata->slots[0].gpio_reset_active_low ?
|
||||
+ GPIOF_OUT_INIT_LOW : GPIOF_OUT_INIT_HIGH;
|
||||
+ ret = gpio_request_one(pdata->slots[0].gpio_reset, flags,
|
||||
+ "mmc_reset");
|
||||
+ if (ret)
|
||||
+ goto err_free_wp;
|
||||
+
|
||||
+ /* hold reset */
|
||||
+ udelay(pdata->slots[0].gpio_reset_hold_us);
|
||||
+
|
||||
+ gpio_set_value(pdata->slots[0].gpio_reset,
|
||||
+ !pdata->slots[0].gpio_reset_active_low);
|
||||
+
|
||||
+ } else
|
||||
+ pdata->slots[0].gpio_reset = -EINVAL;
|
||||
+
|
||||
+
|
||||
return 0;
|
||||
|
||||
err_free_wp:
|
||||
@@ -434,6 +455,8 @@ err_free_sp:
|
||||
|
||||
static void omap_hsmmc_gpio_free(struct omap_mmc_platform_data *pdata)
|
||||
{
|
||||
+ if (gpio_is_valid(pdata->slots[0].gpio_reset))
|
||||
+ gpio_free(pdata->slots[0].gpio_reset);
|
||||
if (gpio_is_valid(pdata->slots[0].gpio_wp))
|
||||
gpio_free(pdata->slots[0].gpio_wp);
|
||||
if (gpio_is_valid(pdata->slots[0].switch_pin))
|
||||
@@ -788,7 +811,7 @@ omap_hsmmc_start_command(struct omap_hsmmc_host *host, struct mmc_command *cmd,
|
||||
* ac, bc, adtc, bcr. Only commands ending an open ended transfer need
|
||||
* a val of 0x3, rest 0x0.
|
||||
*/
|
||||
- if (cmd == host->mrq->stop)
|
||||
+ if (host->mrq && cmd == host->mrq->stop)
|
||||
cmdtype = 0x3;
|
||||
|
||||
cmdreg = (cmd->opcode << 24) | (resptype << 16) | (cmdtype << 22);
|
||||
@@ -830,6 +853,8 @@ static void omap_hsmmc_request_done(struct omap_hsmmc_host *host, struct mmc_req
|
||||
int dma_ch;
|
||||
unsigned long flags;
|
||||
|
||||
+ BUG_ON(mrq == NULL);
|
||||
+
|
||||
spin_lock_irqsave(&host->irq_lock, flags);
|
||||
host->req_in_progress = 0;
|
||||
dma_ch = host->dma_ch;
|
||||
@@ -1720,6 +1745,7 @@ static struct omap_mmc_platform_data *of_get_hsmmc_pdata(struct device *dev)
|
||||
struct device_node *np = dev->of_node;
|
||||
u32 bus_width, max_freq;
|
||||
int cd_gpio, wp_gpio;
|
||||
+ enum of_gpio_flags reset_flags;
|
||||
|
||||
cd_gpio = of_get_named_gpio(np, "cd-gpios", 0);
|
||||
wp_gpio = of_get_named_gpio(np, "wp-gpios", 0);
|
||||
@@ -1737,6 +1763,14 @@ static struct omap_mmc_platform_data *of_get_hsmmc_pdata(struct device *dev)
|
||||
pdata->nr_slots = 1;
|
||||
pdata->slots[0].switch_pin = cd_gpio;
|
||||
pdata->slots[0].gpio_wp = wp_gpio;
|
||||
+ reset_flags = 0;
|
||||
+ pdata->slots[0].gpio_reset = of_get_named_gpio_flags(np,
|
||||
+ "reset-gpios", 0, &reset_flags);
|
||||
+ pdata->slots[0].gpio_reset_active_low =
|
||||
+ (reset_flags & OF_GPIO_ACTIVE_LOW) != 0;
|
||||
+ pdata->slots[0].gpio_reset_hold_us = 100; /* default */
|
||||
+ of_property_read_u32(np, "reset-gpio-hold-us",
|
||||
+ &pdata->slots[0].gpio_reset_hold_us);
|
||||
|
||||
if (of_find_property(np, "ti,non-removable", NULL)) {
|
||||
pdata->slots[0].nonremovable = true;
|
||||
@@ -1802,6 +1836,10 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
+ pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
|
||||
+ if (IS_ERR(pinctrl))
|
||||
+ dev_warn(&pdev->dev, "unable to select pin group\n");
|
||||
+
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (res == NULL || irq < 0)
|
||||
diff --git a/include/linux/platform_data/mmc-omap.h b/include/linux/platform_data/mmc-omap.h
|
||||
index 2bf1b30..d548994 100644
|
||||
--- a/include/linux/platform_data/mmc-omap.h
|
||||
+++ b/include/linux/platform_data/mmc-omap.h
|
||||
@@ -115,6 +115,9 @@ struct omap_mmc_platform_data {
|
||||
|
||||
int switch_pin; /* gpio (card detect) */
|
||||
int gpio_wp; /* gpio (write protect) */
|
||||
+ int gpio_reset; /* gpio (reset) */
|
||||
+ int gpio_reset_active_low; /* 1 if reset is active low */
|
||||
+ u32 gpio_reset_hold_us; /* time to hold in us */
|
||||
|
||||
int (*set_bus_mode)(struct device *dev, int slot, int bus_mode);
|
||||
int (*set_power)(struct device *dev, int slot,
|
||||
--
|
||||
1.8.2.1
|
||||
|
||||
From b45e4df71f07f2178db133db540e3f15e0b4ec05 Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
Date: Sat, 15 Sep 2012 12:00:41 +0300
|
||||
Subject: [PATCH] pinctrl: pinctrl-single must be initialized early.
|
||||
|
||||
When using pinctrl-single to handle i2c initialization, it has
|
||||
to be done early. Whether this is the best way to do so, is an
|
||||
exercise left to the reader.
|
||||
---
|
||||
drivers/pinctrl/pinctrl-single.c | 12 +++++++++++-
|
||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
|
||||
index a82ace4..aeef35d 100644
|
||||
--- a/drivers/pinctrl/pinctrl-single.c
|
||||
+++ b/drivers/pinctrl/pinctrl-single.c
|
||||
@@ -1673,7 +1673,17 @@ static struct platform_driver pcs_driver = {
|
||||
#endif
|
||||
};
|
||||
|
||||
-module_platform_driver(pcs_driver);
|
||||
+static int __init pcs_init(void)
|
||||
+{
|
||||
+ return platform_driver_register(&pcs_driver);
|
||||
+}
|
||||
+postcore_initcall(pcs_init);
|
||||
+
|
||||
+static void __exit pcs_exit(void)
|
||||
+{
|
||||
+ platform_driver_unregister(&pcs_driver);
|
||||
+}
|
||||
+module_exit(pcs_exit);
|
||||
|
||||
MODULE_AUTHOR("Tony Lindgren <tony@atomide.com>");
|
||||
MODULE_DESCRIPTION("One-register-per-pin type device tree based pinctrl driver");
|
||||
--
|
||||
1.8.2.1
|
||||
|
||||
From e5e7abd2de7d8d4c74b5a1ccc6d47988250bd17d Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
Date: Fri, 28 Jun 2013 18:39:55 +0300
|
||||
Subject: [PATCH 1/4] dts: beaglebone: Add I2C definitions for EEPROMs & capes
|
||||
|
||||
Add the I2C definitions for the EEPROM devices on the baseboard
|
||||
and on the possibly connected capes.
|
||||
|
||||
Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
---
|
||||
arch/arm/boot/dts/am335x-bone-common.dtsi | 39 +++++++++++++++++++++++++++++++
|
||||
1 file changed, 39 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
index e3f27ec..2d12775 100644
|
||||
--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
@@ -84,6 +84,13 @@
|
||||
>;
|
||||
};
|
||||
|
||||
+ i2c2_pins: pinmux_i2c2_pins {
|
||||
+ pinctrl-single,pins = <
|
||||
+ 0x178 0x73 /* uart1_ctsn.i2c2_sda, SLEWCTRL_SLOW | INPUT_PULLUP | MODE3 */
|
||||
+ 0x17c 0x73 /* uart1_rtsn.i2c2_scl, SLEWCTRL_SLOW | INPUT_PULLUP | MODE3 */
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
uart0_pins: pinmux_uart0_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x170 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart0_rxd.uart0_rxd */
|
||||
@@ -220,6 +227,38 @@
|
||||
reg = <0x24>;
|
||||
};
|
||||
|
||||
+ baseboard_eeprom: baseboard_eeprom@50 {
|
||||
+ compatible = "at,24c256";
|
||||
+ reg = <0x50>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c2 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&i2c2_pins>;
|
||||
+
|
||||
+ status = "okay";
|
||||
+ clock-frequency = <100000>;
|
||||
+
|
||||
+ cape_eeprom0: cape_eeprom0@54 {
|
||||
+ compatible = "at,24c256";
|
||||
+ reg = <0x54>;
|
||||
+ };
|
||||
+
|
||||
+ cape_eeprom1: cape_eeprom1@55 {
|
||||
+ compatible = "at,24c256";
|
||||
+ reg = <0x55>;
|
||||
+ };
|
||||
+
|
||||
+ cape_eeprom2: cape_eeprom2@56 {
|
||||
+ compatible = "at,24c256";
|
||||
+ reg = <0x56>;
|
||||
+ };
|
||||
+
|
||||
+ cape_eeprom3: cape_eeprom3@57 {
|
||||
+ compatible = "at,24c256";
|
||||
+ reg = <0x57>;
|
||||
+ };
|
||||
};
|
||||
|
||||
/include/ "tps65217.dtsi"
|
||||
--
|
||||
1.8.4.rc3
|
23
arm-am33xx-cpsw.patch
Normal file
23
arm-am33xx-cpsw.patch
Normal file
@ -0,0 +1,23 @@
|
||||
Bugzilla: 1012025
|
||||
Upstream-status: An initial work around for the cpsw driver issue trying to access HW registers
|
||||
with clock disabled. Upstream is working on a proper fix with the hope to land it in 3.13.
|
||||
|
||||
--- linux-3.12.4-1.fc20.x86_64/drivers/net/ethernet/ti/cpsw.c.orig 2013-12-11 20:52:41.576478796 +0000
|
||||
+++ linux-3.12.4-1.fc20.x86_64/drivers/net/ethernet/ti/cpsw.c 2013-12-11 20:55:14.418692261 +0000
|
||||
@@ -2001,6 +2001,8 @@
|
||||
goto clean_cpsw_iores_ret;
|
||||
}
|
||||
priv->regs = ss_regs;
|
||||
+
|
||||
+ pm_runtime_get_sync(&pdev->dev);
|
||||
priv->version = __raw_readl(&priv->regs->id_ver);
|
||||
priv->host_port = HOST_PORT_NUM;
|
||||
|
||||
@@ -2161,6 +2163,7 @@
|
||||
goto clean_irq_ret;
|
||||
}
|
||||
}
|
||||
+ pm_runtime_put_sync(&pdev->dev);
|
||||
|
||||
return 0;
|
||||
|
@ -1,439 +0,0 @@
|
||||
commit 8b806e0201b97844d0eff4713eb88f0a6d0f689d
|
||||
Author: Arnd Bergmann <arnd@arndb.de>
|
||||
Date: Fri Jun 14 17:16:30 2013 +0200
|
||||
|
||||
ARM: exynos multiplatform, next try
|
||||
|
||||
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||||
|
||||
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
|
||||
index e401a76..fad9324 100644
|
||||
--- a/arch/arm/Kconfig.debug
|
||||
+++ b/arch/arm/Kconfig.debug
|
||||
@@ -422,7 +422,7 @@ choice
|
||||
|
||||
config DEBUG_S3C_UART0
|
||||
depends on PLAT_SAMSUNG
|
||||
- select DEBUG_EXYNOS_UART if ARCH_EXYNOS
|
||||
+ select DEBUG_EXYNOS_UART if ARCH_EXYNOS_COMMON
|
||||
bool "Use S3C UART 0 for low-level debug"
|
||||
help
|
||||
Say Y here if you want the debug print routines to direct
|
||||
@@ -434,7 +434,7 @@ choice
|
||||
|
||||
config DEBUG_S3C_UART1
|
||||
depends on PLAT_SAMSUNG
|
||||
- select DEBUG_EXYNOS_UART if ARCH_EXYNOS
|
||||
+ select DEBUG_EXYNOS_UART if ARCH_EXYNOS_COMMON
|
||||
bool "Use S3C UART 1 for low-level debug"
|
||||
help
|
||||
Say Y here if you want the debug print routines to direct
|
||||
@@ -446,7 +446,7 @@ choice
|
||||
|
||||
config DEBUG_S3C_UART2
|
||||
depends on PLAT_SAMSUNG
|
||||
- select DEBUG_EXYNOS_UART if ARCH_EXYNOS
|
||||
+ select DEBUG_EXYNOS_UART if ARCH_EXYNOS_COMMON
|
||||
bool "Use S3C UART 2 for low-level debug"
|
||||
help
|
||||
Say Y here if you want the debug print routines to direct
|
||||
@@ -457,7 +457,7 @@ choice
|
||||
by CONFIG_S3C_LOWLEVEL_UART_PORT.
|
||||
|
||||
config DEBUG_S3C_UART3
|
||||
- depends on PLAT_SAMSUNG && ARCH_EXYNOS
|
||||
+ depends on PLAT_SAMSUNG && ARCH_EXYNOS_COMMON
|
||||
select DEBUG_EXYNOS_UART
|
||||
bool "Use S3C UART 3 for low-level debug"
|
||||
help
|
||||
diff --git a/arch/arm/include/debug/samsung.S b/arch/arm/include/debug/samsung.S
|
||||
index f3a9cff..8d8d922 100644
|
||||
--- a/arch/arm/include/debug/samsung.S
|
||||
+++ b/arch/arm/include/debug/samsung.S
|
||||
@@ -9,7 +9,7 @@
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
-#include <plat/regs-serial.h>
|
||||
+#include <linux/serial_s3c.h>
|
||||
|
||||
/* The S5PV210/S5PC110 implementations are as belows. */
|
||||
|
||||
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
|
||||
index 855d4a7..8744890 100644
|
||||
--- a/arch/arm/mach-exynos/Kconfig
|
||||
+++ b/arch/arm/mach-exynos/Kconfig
|
||||
@@ -7,13 +7,24 @@
|
||||
|
||||
# Configuration options for the EXYNOS4
|
||||
|
||||
-if ARCH_EXYNOS
|
||||
+config ARCH_EXYNOS_MULTI
|
||||
+ bool "Samsung EXYNOS" if ARCH_MULTI_V7
|
||||
+ select ARCH_HAS_CPUFREQ
|
||||
+ select CPU_V7
|
||||
+ select GENERIC_CLOCKEVENTS
|
||||
+ select HAVE_CLK
|
||||
+ select HAVE_S3C2410_I2C if I2C
|
||||
+ select HAVE_S3C_RTC if RTC_CLASS
|
||||
+ help
|
||||
+ Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
|
||||
+
|
||||
+if ARCH_EXYNOS || ARCH_EXYNOS_MULTI
|
||||
|
||||
menu "SAMSUNG EXYNOS SoCs Support"
|
||||
|
||||
config ARCH_EXYNOS4
|
||||
bool "SAMSUNG EXYNOS4"
|
||||
- default y
|
||||
+ default ARCH_EXYNOS
|
||||
select GIC_NON_BANKED
|
||||
select HAVE_ARM_SCU if SMP
|
||||
select HAVE_SMP
|
||||
@@ -24,12 +35,16 @@ config ARCH_EXYNOS4
|
||||
|
||||
config ARCH_EXYNOS5
|
||||
bool "SAMSUNG EXYNOS5"
|
||||
+ default ARCH_EXYNOS
|
||||
select HAVE_ARM_SCU if SMP
|
||||
select HAVE_SMP
|
||||
select PINCTRL
|
||||
help
|
||||
Samsung EXYNOS5 (Cortex-A15) SoC based systems
|
||||
|
||||
+config ARCH_EXYNOS_COMMON
|
||||
+ def_bool ARCH_EXYNOS4 || ARCH_EXYNOS5
|
||||
+
|
||||
comment "EXYNOS SoCs"
|
||||
|
||||
config CPU_EXYNOS4210
|
||||
@@ -41,7 +56,7 @@ config CPU_EXYNOS4210
|
||||
select PM_GENERIC_DOMAINS if PM
|
||||
select S5P_PM if PM
|
||||
select S5P_SLEEP if PM
|
||||
- select SAMSUNG_DMADEV
|
||||
+ select SAMSUNG_DMADEV if !ARCH_MULTIPLATFORM
|
||||
help
|
||||
Enable EXYNOS4210 CPU support
|
||||
|
||||
@@ -49,10 +64,11 @@ config SOC_EXYNOS4212
|
||||
bool "SAMSUNG EXYNOS4212"
|
||||
default y
|
||||
depends on ARCH_EXYNOS4
|
||||
+ select MACH_EXYNOS4_DT
|
||||
select PINCTRL_EXYNOS
|
||||
select S5P_PM if PM
|
||||
select S5P_SLEEP if PM
|
||||
- select SAMSUNG_DMADEV
|
||||
+ select SAMSUNG_DMADEV if !ARCH_MULTIPLATFORM
|
||||
help
|
||||
Enable EXYNOS4212 SoC support
|
||||
|
||||
@@ -60,8 +76,9 @@ config SOC_EXYNOS4412
|
||||
bool "SAMSUNG EXYNOS4412"
|
||||
default y
|
||||
depends on ARCH_EXYNOS4
|
||||
+ select MACH_EXYNOS4_DT
|
||||
select PINCTRL_EXYNOS
|
||||
- select SAMSUNG_DMADEV
|
||||
+ select SAMSUNG_DMADEV if !ARCH_MULTIPLATFORM
|
||||
help
|
||||
Enable EXYNOS4412 SoC support
|
||||
|
||||
@@ -70,11 +87,12 @@ config SOC_EXYNOS5250
|
||||
default y
|
||||
depends on ARCH_EXYNOS5
|
||||
select PINCTRL_EXYNOS
|
||||
+ select MACH_EXYNOS5_DT
|
||||
select PM_GENERIC_DOMAINS if PM
|
||||
select S5P_PM if PM
|
||||
select S5P_SLEEP if PM
|
||||
select S5P_DEV_MFC
|
||||
- select SAMSUNG_DMADEV
|
||||
+ select SAMSUNG_DMADEV if !ARCH_MULTIPLATFORM
|
||||
help
|
||||
Enable EXYNOS5250 SoC support
|
||||
|
||||
@@ -121,9 +139,7 @@ config MACH_EXYNOS4_DT
|
||||
with this machine file.
|
||||
|
||||
config MACH_EXYNOS5_DT
|
||||
- bool "SAMSUNG EXYNOS5 Machine using device tree"
|
||||
- default y
|
||||
- depends on ARCH_EXYNOS5
|
||||
+ bool
|
||||
select ARM_AMBA
|
||||
select CLKSRC_OF
|
||||
select USB_ARCH_HAS_XHCI
|
||||
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile
|
||||
index e970a7a..ae397bb 100644
|
||||
--- a/arch/arm/mach-exynos/Makefile
|
||||
+++ b/arch/arm/mach-exynos/Makefile
|
||||
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
|
||||
@@ -5,14 +5,11 @@
|
||||
#
|
||||
# Licensed under GPLv2
|
||||
|
||||
-obj-y :=
|
||||
-obj-m :=
|
||||
-obj-n :=
|
||||
-obj- :=
|
||||
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung
|
||||
|
||||
-# Core
|
||||
+ifdef CONFIG_ARCH_EXYNOS_COMMON
|
||||
|
||||
-obj-$(CONFIG_ARCH_EXYNOS) += common.o
|
||||
+obj-y += pmu.o
|
||||
|
||||
obj-$(CONFIG_S5P_PM) += pm.o
|
||||
obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o
|
||||
@@ -24,8 +21,8 @@
|
||||
|
||||
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
||||
|
||||
-obj-$(CONFIG_ARCH_EXYNOS) += exynos-smc.o
|
||||
-obj-$(CONFIG_ARCH_EXYNOS) += firmware.o
|
||||
++obj-y += exynos-smc.o
|
||||
++obj-y += firmware.o
|
||||
|
||||
plus_sec := $(call as-instr,.arch_extension sec,+sec)
|
||||
AFLAGS_exynos-smc.o :=-Wa,-march=armv7-a$(plus_sec)
|
||||
@@ -34,3 +31,5 @@
|
||||
|
||||
obj-$(CONFIG_MACH_EXYNOS4_DT) += mach-exynos4-dt.o
|
||||
obj-$(CONFIG_MACH_EXYNOS5_DT) += mach-exynos5-dt.o
|
||||
+
|
||||
+endif
|
||||
index 3dc5cbe..e61abdc 100644
|
||||
--- a/arch/arm/plat-samsung/Kconfig
|
||||
+++ b/arch/arm/plat-samsung/Kconfig
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
config PLAT_SAMSUNG
|
||||
bool
|
||||
- depends on PLAT_S3C24XX || ARCH_S3C64XX || PLAT_S5P || ARCH_EXYNOS
|
||||
+ depends on PLAT_S3C24XX || ARCH_S3C64XX || PLAT_S5P || ARCH_EXYNOS_COMMON
|
||||
default y
|
||||
select GENERIC_IRQ_CHIP
|
||||
select NO_IOPORT
|
||||
@@ -176,6 +176,7 @@ config S5P_DEV_UART
|
||||
|
||||
config S3C_ADC
|
||||
bool "ADC common driver support"
|
||||
+ depends on !ARCH_MULTIPLATFORM
|
||||
help
|
||||
Core support for the ADC block found in the Samsung SoC systems
|
||||
for drivers such as the touchscreen and hwmon to use to share
|
||||
@@ -396,6 +397,7 @@ config S5P_DEV_USB_EHCI
|
||||
|
||||
config S3C24XX_PWM
|
||||
bool "PWM device support"
|
||||
+ depends on !ARCH_MULTIPLATFORM
|
||||
select PWM
|
||||
select PWM_SAMSUNG
|
||||
help
|
||||
@@ -453,7 +455,7 @@ comment "Power management"
|
||||
config SAMSUNG_PM_DEBUG
|
||||
bool "S3C2410 PM Suspend debug"
|
||||
depends on PM
|
||||
- select DEBUG_LL
|
||||
+ depends on DEBUG_LL && SERIAL_SAMSUNG
|
||||
help
|
||||
Say Y here if you want verbose debugging from the PM Suspend and
|
||||
Resume code. See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>
|
||||
diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile
|
||||
index 98d07d8..b458e7d 100644
|
||||
--- a/arch/arm/plat-samsung/Makefile
|
||||
+++ b/arch/arm/plat-samsung/Makefile
|
||||
@@ -4,6 +4,9 @@
|
||||
#
|
||||
# Licensed under GPLv2
|
||||
|
||||
+ccflags-$(CONFIG_ARCH_MULTI_V7) += -I$(srctree)/$(src)/include
|
||||
+ccflags-$(CONFIG_ARCH_EXYNOS_COMMON) += -I$(srctree)/arch/arm/mach-exynos/include
|
||||
+
|
||||
obj-y :=
|
||||
obj-m :=
|
||||
obj-n := dummy.o
|
||||
diff --git a/arch/arm/plat-samsung/s5p-irq-pm.c b/arch/arm/plat-samsung/s5p-irq-pm.c
|
||||
index 7c1e3b7..dc66bb5 100644
|
||||
--- a/arch/arm/plat-samsung/s5p-irq-pm.c
|
||||
+++ b/arch/arm/plat-samsung/s5p-irq-pm.c
|
||||
@@ -40,7 +40,7 @@ int s3c_irq_wake(struct irq_data *data, unsigned int state)
|
||||
unsigned long irqbit;
|
||||
unsigned int irq_rtc_tic, irq_rtc_alarm;
|
||||
|
||||
-#ifdef CONFIG_ARCH_EXYNOS
|
||||
+#ifdef CONFIG_ARCH_EXYNOS_COMMON
|
||||
if (soc_is_exynos5250()) {
|
||||
irq_rtc_tic = EXYNOS5_IRQ_RTC_TIC;
|
||||
irq_rtc_alarm = EXYNOS5_IRQ_RTC_ALARM;
|
||||
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
|
||||
index 81465c2..6bd8b5a 100644
|
||||
--- a/drivers/clocksource/Kconfig
|
||||
+++ b/drivers/clocksource/Kconfig
|
||||
@@ -75,7 +75,7 @@ config CLKSRC_METAG_GENERIC
|
||||
This option enables support for the Meta per-thread timers.
|
||||
|
||||
config CLKSRC_EXYNOS_MCT
|
||||
- def_bool y if ARCH_EXYNOS
|
||||
+ def_bool y if ARCH_EXYNOS_COMMON
|
||||
help
|
||||
Support for Multi Core Timer controller on Exynos SoCs.
|
||||
|
||||
diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
|
||||
index de4d5d9..ffe9cb3 100644
|
||||
--- a/drivers/cpufreq/Kconfig.arm
|
||||
+++ b/drivers/cpufreq/Kconfig.arm
|
||||
@@ -27,6 +27,7 @@ config ARM_EXYNOS_CPUFREQ
|
||||
|
||||
If in doubt, say N.
|
||||
|
||||
+if ARM_EXYNOS_CPUFREQ
|
||||
config ARM_EXYNOS4210_CPUFREQ
|
||||
def_bool CPU_EXYNOS4210
|
||||
help
|
||||
@@ -54,6 +55,7 @@ config ARM_EXYNOS5440_CPUFREQ
|
||||
SoC. The nature of exynos5440 clock controller is
|
||||
different than previous exynos controllers so not using
|
||||
the common exynos framework.
|
||||
+endif
|
||||
|
||||
config ARM_HIGHBANK_CPUFREQ
|
||||
tristate "Calxeda Highbank-based"
|
||||
diff --git a/drivers/devfreq/Kconfig b/drivers/devfreq/Kconfig
|
||||
index 31f3adb..15454ad 100644
|
||||
--- a/drivers/devfreq/Kconfig
|
||||
+++ b/drivers/devfreq/Kconfig
|
||||
@@ -68,6 +68,7 @@ comment "DEVFREQ Drivers"
|
||||
config ARM_EXYNOS4_BUS_DEVFREQ
|
||||
bool "ARM Exynos4210/4212/4412 Memory Bus DEVFREQ Driver"
|
||||
depends on CPU_EXYNOS4210 || SOC_EXYNOS4212 || SOC_EXYNOS4412
|
||||
+ depends on !ARCH_MULTIPLATFORM
|
||||
select ARCH_HAS_OPP
|
||||
select DEVFREQ_GOV_SIMPLE_ONDEMAND
|
||||
help
|
||||
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
|
||||
index 6c6034e..d9ed7c0 100644
|
||||
--- a/drivers/iommu/Kconfig
|
||||
+++ b/drivers/iommu/Kconfig
|
||||
@@ -168,7 +168,7 @@ config TEGRA_IOMMU_SMMU
|
||||
|
||||
config EXYNOS_IOMMU
|
||||
bool "Exynos IOMMU Support"
|
||||
- depends on ARCH_EXYNOS && EXYNOS_DEV_SYSMMU
|
||||
+ depends on ARCH_EXYNOS_COMMON && EXYNOS_DEV_SYSMMU
|
||||
select IOMMU_API
|
||||
help
|
||||
Support for the IOMMU(System MMU) of Samsung Exynos application
|
||||
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
|
||||
index 5a8ad51..03688dd 100644
|
||||
--- a/drivers/pinctrl/Kconfig
|
||||
+++ b/drivers/pinctrl/Kconfig
|
||||
@@ -252,7 +252,7 @@ config PINCTRL_SAMSUNG
|
||||
|
||||
config PINCTRL_EXYNOS
|
||||
bool "Pinctrl driver data for Samsung EXYNOS SoCs other than 5440"
|
||||
- depends on OF && GPIOLIB && ARCH_EXYNOS
|
||||
+ depends on OF && GPIOLIB && ARCH_EXYNOS_COMMON
|
||||
select PINCTRL_SAMSUNG
|
||||
|
||||
config PINCTRL_EXYNOS5440
|
||||
diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
|
||||
index 75840b5..746a931 100644
|
||||
--- a/drivers/pwm/Kconfig
|
||||
+++ b/drivers/pwm/Kconfig
|
||||
@@ -140,7 +140,7 @@ config PWM_RENESAS_TPU
|
||||
|
||||
config PWM_SAMSUNG
|
||||
tristate "Samsung PWM support"
|
||||
- depends on PLAT_SAMSUNG
|
||||
+ depends on PLAT_SAMSUNG && !ARCH_MULTIPLATFORM
|
||||
help
|
||||
Generic PWM framework driver for Samsung.
|
||||
|
||||
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
|
||||
index 89cbbab..830b8e7 100644
|
||||
--- a/drivers/spi/Kconfig
|
||||
+++ b/drivers/spi/Kconfig
|
||||
@@ -365,7 +365,7 @@ config SPI_S3C24XX_FIQ
|
||||
|
||||
config SPI_S3C64XX
|
||||
tristate "Samsung S3C64XX series type SPI"
|
||||
- depends on (ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5P64X0 || ARCH_EXYNOS)
|
||||
+ depends on (ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5P64X0 || ARCH_EXYNOS_COMMON)
|
||||
select S3C64XX_DMA if ARCH_S3C64XX
|
||||
help
|
||||
SPI driver for Samsung S3C64XX and newer SoCs.
|
||||
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
|
||||
index 4263d01..d7ad720 100644
|
||||
--- a/drivers/usb/host/Kconfig
|
||||
+++ b/drivers/usb/host/Kconfig
|
||||
@@ -462,7 +462,7 @@ config USB_OHCI_SH
|
||||
|
||||
config USB_OHCI_EXYNOS
|
||||
boolean "OHCI support for Samsung EXYNOS SoC Series"
|
||||
- depends on ARCH_EXYNOS
|
||||
+ depends on ARCH_EXYNOS_COMMON
|
||||
help
|
||||
Enable support for the Samsung Exynos SOC's on-chip OHCI controller.
|
||||
|
||||
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
|
||||
index 2c301f8..0ba3e03 100644
|
||||
--- a/drivers/video/Kconfig
|
||||
+++ b/drivers/video/Kconfig
|
||||
@@ -2039,7 +2039,7 @@ config FB_TMIO_ACCELL
|
||||
config FB_S3C
|
||||
tristate "Samsung S3C framebuffer support"
|
||||
depends on FB && (CPU_S3C2416 || ARCH_S3C64XX || ARCH_S5P64X0 || \
|
||||
- ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS)
|
||||
+ ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS_COMMON)
|
||||
select FB_CFB_FILLRECT
|
||||
select FB_CFB_COPYAREA
|
||||
select FB_CFB_IMAGEBLIT
|
||||
diff --git a/drivers/video/exynos/Kconfig b/drivers/video/exynos/Kconfig
|
||||
index b8abda5..216af14 100644
|
||||
--- a/drivers/video/exynos/Kconfig
|
||||
+++ b/drivers/video/exynos/Kconfig
|
||||
@@ -15,7 +15,7 @@ if EXYNOS_VIDEO
|
||||
|
||||
config EXYNOS_MIPI_DSI
|
||||
bool "EXYNOS MIPI DSI driver support."
|
||||
- depends on ARCH_S5PV210 || ARCH_EXYNOS
|
||||
+ depends on ARCH_S5PV210 || ARCH_EXYNOS_COMMON
|
||||
help
|
||||
This enables support for MIPI-DSI device.
|
||||
|
||||
@@ -29,7 +29,7 @@ config EXYNOS_LCD_S6E8AX0
|
||||
|
||||
config EXYNOS_DP
|
||||
bool "EXYNOS DP driver support"
|
||||
- depends on ARCH_EXYNOS
|
||||
+ depends on ARCH_EXYNOS_COMMON
|
||||
default n
|
||||
help
|
||||
This enables support for DP device.
|
||||
diff --git a/sound/soc/samsung/Kconfig b/sound/soc/samsung/Kconfig
|
||||
index 9855dfc..fcb2045 100644
|
||||
--- a/sound/soc/samsung/Kconfig
|
||||
+++ b/sound/soc/samsung/Kconfig
|
||||
@@ -1,6 +1,6 @@
|
||||
config SND_SOC_SAMSUNG
|
||||
tristate "ASoC support for Samsung"
|
||||
- depends on PLAT_SAMSUNG
|
||||
+ depends on PLAT_SAMSUNG && !ARCH_MULTIPLATFORM
|
||||
select S3C64XX_DMA if ARCH_S3C64XX
|
||||
select S3C2410_DMA if ARCH_S3C24XX
|
||||
help
|
||||
--- Makefile.orig 2013-11-04 12:47:11.527488114 -0500
|
||||
+++ b/arch/arm/boot/dts/Makefile 2013-11-04 12:47:18.933540972 -0500
|
||||
@@ -48,7 +48,7 @@
|
||||
dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \
|
||||
dove-cubox.dtb \
|
||||
dove-dove-db.dtb
|
||||
-dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
|
||||
+dtb-$(CONFIG_ARCH_EXYNOS_COMMON) += exynos4210-origen.dtb \
|
||||
exynos4210-smdkv310.dtb \
|
||||
exynos4210-trats.dtb \
|
||||
exynos4210-universal_c210.dtb \
|
@ -1,200 +0,0 @@
|
||||
diff --git a/arch/arm/include/asm/mach/arch.h b/arch/arm/include/asm/mach/arch.h
|
||||
index 441efc4..d91b168 100644
|
||||
--- a/arch/arm/include/asm/mach/arch.h
|
||||
+++ b/arch/arm/include/asm/mach/arch.h
|
||||
@@ -35,7 +35,7 @@ struct machine_desc {
|
||||
unsigned int nr_irqs; /* number of IRQs */
|
||||
|
||||
#ifdef CONFIG_ZONE_DMA
|
||||
- unsigned long dma_zone_size; /* size of DMA-able area */
|
||||
+ phys_addr_t dma_zone_size; /* size of DMA-able area */
|
||||
#endif
|
||||
|
||||
unsigned int video_start; /* start of video RAM */
|
||||
diff --git a/arch/arm/include/asm/outercache.h b/arch/arm/include/asm/outercache.h
|
||||
index 12f71a1..f94784f 100644
|
||||
--- a/arch/arm/include/asm/outercache.h
|
||||
+++ b/arch/arm/include/asm/outercache.h
|
||||
@@ -37,10 +37,10 @@ struct outer_cache_fns {
|
||||
void (*resume)(void);
|
||||
};
|
||||
|
||||
-#ifdef CONFIG_OUTER_CACHE
|
||||
-
|
||||
extern struct outer_cache_fns outer_cache;
|
||||
|
||||
+#ifdef CONFIG_OUTER_CACHE
|
||||
+
|
||||
static inline void outer_inv_range(phys_addr_t start, phys_addr_t end)
|
||||
{
|
||||
if (outer_cache.inv_range)
|
||||
diff --git a/arch/arm/mach-highbank/Kconfig b/arch/arm/mach-highbank/Kconfig
|
||||
index cd9fcb1..b9dd13a 100644
|
||||
--- a/arch/arm/mach-highbank/Kconfig
|
||||
+++ b/arch/arm/mach-highbank/Kconfig
|
||||
@@ -1,9 +1,14 @@
|
||||
config ARCH_HIGHBANK
|
||||
bool "Calxeda ECX-1000/2000 (Highbank/Midway)" if ARCH_MULTI_V7
|
||||
+ select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
|
||||
select ARCH_HAS_CPUFREQ
|
||||
+ select ARCH_HAS_HOLES_MEMORYMODEL
|
||||
select ARCH_HAS_OPP
|
||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||
select ARM_AMBA
|
||||
+ select ARM_ERRATA_764369
|
||||
+ select ARM_ERRATA_775420
|
||||
+ select ARM_ERRATA_798181
|
||||
select ARM_GIC
|
||||
select ARM_TIMER_SP804
|
||||
select CACHE_L2X0
|
||||
@@ -18,3 +23,4 @@ config ARCH_HIGHBANK
|
||||
select PL320_MBOX
|
||||
select SPARSE_IRQ
|
||||
select USE_OF
|
||||
+ select ZONE_DMA if ARM_LPAE
|
||||
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c
|
||||
index 8881579..8e63ccd 100644
|
||||
--- a/arch/arm/mach-highbank/highbank.c
|
||||
+++ b/arch/arm/mach-highbank/highbank.c
|
||||
@@ -18,14 +18,11 @@
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/io.h>
|
||||
-#include <linux/irq.h>
|
||||
#include <linux/irqchip.h>
|
||||
-#include <linux/irqdomain.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/of_address.h>
|
||||
-#include <linux/smp.h>
|
||||
#include <linux/amba/bus.h>
|
||||
#include <linux/clk-provider.h>
|
||||
|
||||
@@ -35,7 +32,6 @@
|
||||
#include <asm/hardware/cache-l2x0.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
-#include <asm/mach/time.h>
|
||||
|
||||
#include "core.h"
|
||||
#include "sysregs.h"
|
||||
@@ -65,13 +61,11 @@ void highbank_set_cpu_jump(int cpu, void *jump_addr)
|
||||
HB_JUMP_TABLE_PHYS(cpu) + 15);
|
||||
}
|
||||
|
||||
-#ifdef CONFIG_CACHE_L2X0
|
||||
static void highbank_l2x0_disable(void)
|
||||
{
|
||||
/* Disable PL310 L2 Cache controller */
|
||||
highbank_smc1(0x102, 0x0);
|
||||
}
|
||||
-#endif
|
||||
|
||||
static void __init highbank_init_irq(void)
|
||||
{
|
||||
@@ -80,12 +74,13 @@ static void __init highbank_init_irq(void)
|
||||
if (of_find_compatible_node(NULL, NULL, "arm,cortex-a9"))
|
||||
highbank_scu_map_io();
|
||||
|
||||
-#ifdef CONFIG_CACHE_L2X0
|
||||
/* Enable PL310 L2 Cache controller */
|
||||
- highbank_smc1(0x102, 0x1);
|
||||
- l2x0_of_init(0, ~0UL);
|
||||
- outer_cache.disable = highbank_l2x0_disable;
|
||||
-#endif
|
||||
+ if (IS_ENABLED(CONFIG_CACHE_L2X0) &&
|
||||
+ of_find_compatible_node(NULL, NULL, "arm,pl310-cache")) {
|
||||
+ highbank_smc1(0x102, 0x1);
|
||||
+ l2x0_of_init(0, ~0UL);
|
||||
+ outer_cache.disable = highbank_l2x0_disable;
|
||||
+ }
|
||||
}
|
||||
|
||||
static void __init highbank_timer_init(void)
|
||||
@@ -176,6 +171,9 @@ static const char *highbank_match[] __initconst = {
|
||||
};
|
||||
|
||||
DT_MACHINE_START(HIGHBANK, "Highbank")
|
||||
+#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
|
||||
+ .dma_zone_size = (4ULL * SZ_1G),
|
||||
+#endif
|
||||
.smp = smp_ops(highbank_smp_ops),
|
||||
.init_irq = highbank_init_irq,
|
||||
.init_time = highbank_timer_init,
|
||||
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
|
||||
index 15225d8..c0bb66e 100644
|
||||
--- a/arch/arm/mm/init.c
|
||||
+++ b/arch/arm/mm/init.c
|
||||
@@ -207,7 +207,7 @@ static void __init arm_bootmem_init(unsigned long start_pfn,
|
||||
|
||||
#ifdef CONFIG_ZONE_DMA
|
||||
|
||||
-unsigned long arm_dma_zone_size __read_mostly;
|
||||
+phys_addr_t arm_dma_zone_size __read_mostly;
|
||||
EXPORT_SYMBOL(arm_dma_zone_size);
|
||||
|
||||
/*
|
||||
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
|
||||
index 06fe45c..bff41d4 100644
|
||||
--- a/drivers/dma/amba-pl08x.c
|
||||
+++ b/drivers/dma/amba-pl08x.c
|
||||
@@ -133,6 +133,8 @@ struct pl08x_bus_data {
|
||||
u8 buswidth;
|
||||
};
|
||||
|
||||
+#define IS_BUS_ALIGNED(bus) IS_ALIGNED((bus)->addr, (bus)->buswidth)
|
||||
+
|
||||
/**
|
||||
* struct pl08x_phy_chan - holder for the physical channels
|
||||
* @id: physical index to this channel
|
||||
@@ -845,10 +847,13 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
|
||||
|
||||
pl08x_choose_master_bus(&bd, &mbus, &sbus, cctl);
|
||||
|
||||
- dev_vdbg(&pl08x->adev->dev, "src=0x%08x%s/%u dst=0x%08x%s/%u len=%zu\n",
|
||||
- bd.srcbus.addr, cctl & PL080_CONTROL_SRC_INCR ? "+" : "",
|
||||
+ dev_vdbg(&pl08x->adev->dev,
|
||||
+ "src=0x%08llx%s/%u dst=0x%08llx%s/%u len=%zu\n",
|
||||
+ (u64)bd.srcbus.addr,
|
||||
+ cctl & PL080_CONTROL_SRC_INCR ? "+" : "",
|
||||
bd.srcbus.buswidth,
|
||||
- bd.dstbus.addr, cctl & PL080_CONTROL_DST_INCR ? "+" : "",
|
||||
+ (u64)bd.dstbus.addr,
|
||||
+ cctl & PL080_CONTROL_DST_INCR ? "+" : "",
|
||||
bd.dstbus.buswidth,
|
||||
bd.remainder);
|
||||
dev_vdbg(&pl08x->adev->dev, "mbus=%s sbus=%s\n",
|
||||
@@ -886,8 +891,8 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
|
||||
return 0;
|
||||
}
|
||||
|
||||
- if ((bd.srcbus.addr % bd.srcbus.buswidth) ||
|
||||
- (bd.dstbus.addr % bd.dstbus.buswidth)) {
|
||||
+ if (!IS_BUS_ALIGNED(&bd.srcbus) ||
|
||||
+ !IS_BUS_ALIGNED(&bd.dstbus)) {
|
||||
dev_err(&pl08x->adev->dev,
|
||||
"%s src & dst address must be aligned to src"
|
||||
" & dst width if peripheral is flow controller",
|
||||
@@ -908,9 +913,9 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
|
||||
*/
|
||||
if (bd.remainder < mbus->buswidth)
|
||||
early_bytes = bd.remainder;
|
||||
- else if ((mbus->addr) % (mbus->buswidth)) {
|
||||
- early_bytes = mbus->buswidth - (mbus->addr) %
|
||||
- (mbus->buswidth);
|
||||
+ else if (!IS_BUS_ALIGNED(mbus)) {
|
||||
+ early_bytes = mbus->buswidth -
|
||||
+ (mbus->addr & (mbus->buswidth - 1));
|
||||
if ((bd.remainder - early_bytes) < mbus->buswidth)
|
||||
early_bytes = bd.remainder;
|
||||
}
|
||||
@@ -928,7 +933,7 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
|
||||
* Master now aligned
|
||||
* - if slave is not then we must set its width down
|
||||
*/
|
||||
- if (sbus->addr % sbus->buswidth) {
|
||||
+ if (!IS_BUS_ALIGNED(sbus)) {
|
||||
dev_dbg(&pl08x->adev->dev,
|
||||
"%s set down bus width to one byte\n",
|
||||
__func__);
|
95
arm-imx6-utilite.patch
Normal file
95
arm-imx6-utilite.patch
Normal file
@ -0,0 +1,95 @@
|
||||
Add initial support for cm-fx6 module.
|
||||
|
||||
cm-fx6 is a module based on mx6q SoC with the following features:
|
||||
- Up to 4GB of DDR3
|
||||
- 1 LCD/DVI output port
|
||||
- 1 HDMI output port
|
||||
- 2 LVDS LCD ports
|
||||
- Gigabit Ethernet
|
||||
- Analog Audio
|
||||
- CAN
|
||||
- SATA
|
||||
- NAND
|
||||
- PCIE
|
||||
|
||||
This patch allows to boot up the module, configures the serial console,
|
||||
the Ethernet adapter and the hearbeat led.
|
||||
|
||||
Signed-off-by: Valentin Raevsky <valentin@xxxxxxxxxxxxxx>
|
||||
Acked-by: Igor Grinberg <grinberg@xxxxxxxxxxxxxx>
|
||||
---
|
||||
arch/arm/boot/dts/imx6q-cm-fx6.dts | 51 ++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 51 insertions(+)
|
||||
create mode 100644 arch/arm/boot/dts/imx6q-cm-fx6.dts
|
||||
|
||||
diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts
|
||||
new file mode 100644
|
||||
index 0000000..1080215
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts
|
||||
@@ -0,0 +1,51 @@
|
||||
+/*
|
||||
+ * Copyright 2013 CompuLab Ltd.
|
||||
+ *
|
||||
+ * The code contained herein is licensed under the GNU General Public
|
||||
+ * License. You may obtain a copy of the GNU General Public License
|
||||
+ * Version 2 or later at the following locations:
|
||||
+ *
|
||||
+ * http://www.opensource.org/licenses/gpl-license.html
|
||||
+ * http://www.gnu.org/copyleft/gpl.html
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+#include "imx6q.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "CompuLab CM-FX6";
|
||||
+ compatible = "compulab,cm-fx6", "fsl,imx6q";
|
||||
+
|
||||
+ memory {
|
||||
+ reg = <0x10000000 0x80000000>;
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ debug-led {
|
||||
+ label = "Heartbeat";
|
||||
+ gpios = <&gpio2 31 0>;
|
||||
+ linux,default-trigger = "heartbeat";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&gpmi {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_gpmi_nand_1>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&fec {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_enet_1>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart4 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_uart4_1>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -137,6 +137,7 @@
|
||||
imx6dl-sabresd.dtb \
|
||||
imx6dl-wandboard.dtb \
|
||||
imx6q-arm2.dtb \
|
||||
+ imx6q-cm-fx6.dtb \
|
||||
imx6q-phytec-pbab01.dtb \
|
||||
imx6q-sabreauto.dtb \
|
||||
imx6q-sabrelite.dtb \
|
||||
--
|
||||
1.7.9.5
|
||||
|
@ -1,14 +1,14 @@
|
||||
diff -urNp linux-3.9.4-300.fc19.armv7hl_orig/drivers/video/omap2/dss/core.c linux-3.9.4-300.fc19.armv7hl/drivers/video/omap2/dss/core.c
|
||||
--- linux-3.9.4-300.fc19.armv7hl_orig/drivers/video/omap2/dss/core.c 2013-04-28 20:36:01.000000000 -0400
|
||||
+++ linux-3.9.4-300.fc19.armv7hl/drivers/video/omap2/dss/core.c 2013-05-31 12:24:07.711334359 -0400
|
||||
@@ -596,6 +596,9 @@ static int __init omap_dss_init(void)
|
||||
{
|
||||
diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c
|
||||
index 60d3958..0e304ce 100644
|
||||
--- a/drivers/video/omap2/dss/core.c
|
||||
+++ b/drivers/video/omap2/dss/core.c
|
||||
@@ -298,6 +298,9 @@ static int __init omap_dss_init(void)
|
||||
int r;
|
||||
int i;
|
||||
|
||||
+ /* hack to load panel-tfp410 driver */
|
||||
+ request_module("panel-tfp410");
|
||||
+ /* hack to load encoder-tfp410 driver */
|
||||
+ request_module("encoder-tfp410");
|
||||
+
|
||||
r = omap_dss_bus_register();
|
||||
r = platform_driver_probe(&omap_dss_driver, omap_dss_probe);
|
||||
if (r)
|
||||
return r;
|
||||
Binary files linux-3.9.4-300.fc19.armv7hl_orig/drivers/video/omap2/dss/.Makefile.swp and linux-3.9.4-300.fc19.armv7hl/drivers/video/omap2/dss/.Makefile.swp differ
|
||||
|
@ -1,58 +0,0 @@
|
||||
diff -uNr linux-3.10.0-0.rc7.git0.2.fc20.x86_64/arch/arm/boot/dts/imx6q-wandboard.dts linux-3.10.0-0.rc7.git0.2.fc20.armv7hl/arch/arm/boot/dts/imx6q-wandboard.dts
|
||||
--- linux-3.10.0-0.rc7.git0.2.fc20.x86_64/arch/arm/boot/dts/imx6q-wandboard.dts 1969-12-31 18:00:00.000000000 -0600
|
||||
+++ linux-3.10.0-0.rc7.git0.2.fc20.armv7hl/arch/arm/boot/dts/imx6q-wandboard.dts 2013-06-30 15:09:21.350610898 -0500
|
||||
@@ -0,0 +1,44 @@
|
||||
+/*
|
||||
+ * Copyright 2013 Freescale Semiconductor, Inc.
|
||||
+ *
|
||||
+ * Author: Fabio Estevam <fabio.estevam@freescale.com>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ *
|
||||
+ */
|
||||
+/dts-v1/;
|
||||
+#include "imx6q.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "Wandboard i.MX6 Quad Board";
|
||||
+ compatible = "wand,imx6q-wandboard", "fsl,imx6q";
|
||||
+
|
||||
+ memory {
|
||||
+ reg = <0x10000000 0x80000000>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&fec {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_enet_1>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_uart1_1>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbh1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usdhc3 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_usdhc3_2>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
--- linux-3.11.0-0.rc0.git6.2.fc20.x86_64/arch/arm/boot/dts/Makefile.orig 2013-07-12 10:45:40.231087368 -0500
|
||||
+++ linux-3.11.0-0.rc0.git6.2.fc20.x86_64/arch/arm/boot/dts/Makefile 2013-07-12 10:48:39.973819470 -0500
|
||||
@@ -131,6 +131,7 @@
|
||||
imx6q-sabrelite.dtb \
|
||||
imx6q-sabresd.dtb \
|
||||
imx6q-sbc6x.dtb \
|
||||
+ imx6q-wandboard.dtb \
|
||||
imx6sl-evk.dtb \
|
||||
vf610-twr.dtb
|
||||
dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
|
@ -1,155 +0,0 @@
|
||||
commit 7eacd03810960823393521063734fc8188446bca
|
||||
Author: Neil Horman <nhorman@tuxdriver.com>
|
||||
Date: Fri Sep 13 11:05:33 2013 -0400
|
||||
|
||||
bonding: Make alb learning packet interval configurable
|
||||
|
||||
running bonding in ALB mode requires that learning packets be sent periodically,
|
||||
so that the switch knows where to send responding traffic. However, depending
|
||||
on switch configuration, there may not be any need to send traffic at the
|
||||
default rate of 3 packets per second, which represents little more than wasted
|
||||
data. Allow the ALB learning packet interval to be made configurable via sysfs
|
||||
|
||||
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
|
||||
Acked-by: Acked-by: Veaceslav Falico <vfalico@redhat.com>
|
||||
CC: Jay Vosburgh <fubar@us.ibm.com>
|
||||
CC: Andy Gospodarek <andy@greyhouse.net>
|
||||
CC: "David S. Miller" <davem@davemloft.net>
|
||||
Signed-off-by: Andy Gospodarek <andy@greyhouse.net>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
|
||||
index 87bbcfe..9b28e71 100644
|
||||
--- a/Documentation/networking/bonding.txt
|
||||
+++ b/Documentation/networking/bonding.txt
|
||||
@@ -1362,6 +1362,12 @@ To add ARP targets:
|
||||
To remove an ARP target:
|
||||
# echo -192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target
|
||||
|
||||
+To configure the interval between learning packet transmits:
|
||||
+# echo 12 > /sys/class/net/bond0/bonding/lp_interval
|
||||
+ NOTE: the lp_inteval is the number of seconds between instances where
|
||||
+the bonding driver sends learning packets to each slaves peer switch. The
|
||||
+default interval is 1 second.
|
||||
+
|
||||
Example Configuration
|
||||
---------------------
|
||||
We begin with the same example that is shown in section 3.3,
|
||||
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
|
||||
index 91f179d..f428ef57 100644
|
||||
--- a/drivers/net/bonding/bond_alb.c
|
||||
+++ b/drivers/net/bonding/bond_alb.c
|
||||
@@ -1472,7 +1472,7 @@ void bond_alb_monitor(struct work_struct *work)
|
||||
bond_info->lp_counter++;
|
||||
|
||||
/* send learning packets */
|
||||
- if (bond_info->lp_counter >= BOND_ALB_LP_TICKS) {
|
||||
+ if (bond_info->lp_counter >= BOND_ALB_LP_TICKS(bond)) {
|
||||
/* change of curr_active_slave involves swapping of mac addresses.
|
||||
* in order to avoid this swapping from happening while
|
||||
* sending the learning packets, the curr_slave_lock must be held for
|
||||
diff --git a/drivers/net/bonding/bond_alb.h b/drivers/net/bonding/bond_alb.h
|
||||
index 28d8e4c..c5eff5d 100644
|
||||
--- a/drivers/net/bonding/bond_alb.h
|
||||
+++ b/drivers/net/bonding/bond_alb.h
|
||||
@@ -36,14 +36,15 @@ struct slave;
|
||||
* Used for division - never set
|
||||
* to zero !!!
|
||||
*/
|
||||
-#define BOND_ALB_LP_INTERVAL 1 /* In seconds, periodic send of
|
||||
- * learning packets to the switch
|
||||
- */
|
||||
+#define BOND_ALB_DEFAULT_LP_INTERVAL 1
|
||||
+#define BOND_ALB_LP_INTERVAL(bond) (bond->params.lp_interval) /* In seconds, periodic send of
|
||||
+ * learning packets to the switch
|
||||
+ */
|
||||
|
||||
#define BOND_TLB_REBALANCE_TICKS (BOND_TLB_REBALANCE_INTERVAL \
|
||||
* ALB_TIMER_TICKS_PER_SEC)
|
||||
|
||||
-#define BOND_ALB_LP_TICKS (BOND_ALB_LP_INTERVAL \
|
||||
+#define BOND_ALB_LP_TICKS(bond) (BOND_ALB_LP_INTERVAL(bond) \
|
||||
* ALB_TIMER_TICKS_PER_SEC)
|
||||
|
||||
#define TLB_HASH_TABLE_SIZE 256 /* The size of the clients hash table.
|
||||
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
|
||||
index 72df399..55bbb8b 100644
|
||||
--- a/drivers/net/bonding/bond_main.c
|
||||
+++ b/drivers/net/bonding/bond_main.c
|
||||
@@ -4416,6 +4416,7 @@ static int bond_check_params(struct bond_params *params)
|
||||
params->all_slaves_active = all_slaves_active;
|
||||
params->resend_igmp = resend_igmp;
|
||||
params->min_links = min_links;
|
||||
+ params->lp_interval = BOND_ALB_DEFAULT_LP_INTERVAL;
|
||||
|
||||
if (primary) {
|
||||
strncpy(params->primary, primary, IFNAMSIZ);
|
||||
diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
|
||||
index eeab40b..c29b836 100644
|
||||
--- a/drivers/net/bonding/bond_sysfs.c
|
||||
+++ b/drivers/net/bonding/bond_sysfs.c
|
||||
@@ -1699,6 +1699,44 @@ out:
|
||||
static DEVICE_ATTR(resend_igmp, S_IRUGO | S_IWUSR,
|
||||
bonding_show_resend_igmp, bonding_store_resend_igmp);
|
||||
|
||||
+
|
||||
+static ssize_t bonding_show_lp_interval(struct device *d,
|
||||
+ struct device_attribute *attr,
|
||||
+ char *buf)
|
||||
+{
|
||||
+ struct bonding *bond = to_bond(d);
|
||||
+ return sprintf(buf, "%d\n", bond->params.lp_interval);
|
||||
+}
|
||||
+
|
||||
+static ssize_t bonding_store_lp_interval(struct device *d,
|
||||
+ struct device_attribute *attr,
|
||||
+ const char *buf, size_t count)
|
||||
+{
|
||||
+ struct bonding *bond = to_bond(d);
|
||||
+ int new_value, ret = count;
|
||||
+
|
||||
+ if (sscanf(buf, "%d", &new_value) != 1) {
|
||||
+ pr_err("%s: no lp interval value specified.\n",
|
||||
+ bond->dev->name);
|
||||
+ ret = -EINVAL;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ if (new_value <= 0) {
|
||||
+ pr_err ("%s: lp_interval must be between 1 and %d\n",
|
||||
+ bond->dev->name, INT_MAX);
|
||||
+ ret = -EINVAL;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ bond->params.lp_interval = new_value;
|
||||
+out:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static DEVICE_ATTR(lp_interval, S_IRUGO | S_IWUSR,
|
||||
+ bonding_show_lp_interval, bonding_store_lp_interval);
|
||||
+
|
||||
static struct attribute *per_bond_attrs[] = {
|
||||
&dev_attr_slaves.attr,
|
||||
&dev_attr_mode.attr,
|
||||
@@ -1729,6 +1767,7 @@ static struct attribute *per_bond_attrs[] = {
|
||||
&dev_attr_all_slaves_active.attr,
|
||||
&dev_attr_resend_igmp.attr,
|
||||
&dev_attr_min_links.attr,
|
||||
+ &dev_attr_lp_interval.attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
|
||||
index 7ad8bd5..03cf3fd 100644
|
||||
--- a/drivers/net/bonding/bonding.h
|
||||
+++ b/drivers/net/bonding/bonding.h
|
||||
@@ -176,6 +176,7 @@ struct bond_params {
|
||||
int tx_queues;
|
||||
int all_slaves_active;
|
||||
int resend_igmp;
|
||||
+ int lp_interval;
|
||||
};
|
||||
|
||||
struct bond_parm_tbl {
|
@ -1,39 +0,0 @@
|
||||
From dde2356c8466298bd77fa699e0ea296372eed47b Mon Sep 17 00:00:00 2001
|
||||
From: Sachin Prabhu <sprabhu@redhat.com>
|
||||
Date: Fri, 27 Sep 2013 17:35:42 +0000
|
||||
Subject: cifs: Allow LANMAN auth method for servers supporting unencapsulated authentication methods
|
||||
|
||||
This allows users to use LANMAN authentication on servers which support
|
||||
unencapsulated authentication.
|
||||
|
||||
The patch fixes a regression where users using plaintext authentication
|
||||
were no longer able to do so because of changed bought in by patch
|
||||
3f618223dc0bdcbc8d510350e78ee2195ff93768
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1011621
|
||||
|
||||
Reported-by: Panos Kavalagios <Panagiotis.Kavalagios@eurodyn.com>
|
||||
Reviewed-by: Jeff Layton <jlayton@redhat.com>
|
||||
Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
|
||||
Signed-off-by: Steve French <smfrench@gmail.com>
|
||||
---
|
||||
(limited to 'fs/cifs')
|
||||
|
||||
diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c
|
||||
index 352358d..e87387d 100644
|
||||
--- a/fs/cifs/sess.c
|
||||
+++ b/fs/cifs/sess.c
|
||||
@@ -500,9 +500,9 @@ select_sectype(struct TCP_Server_Info *server, enum securityEnum requested)
|
||||
return NTLMv2;
|
||||
if (global_secflags & CIFSSEC_MAY_NTLM)
|
||||
return NTLM;
|
||||
- /* Fallthrough */
|
||||
default:
|
||||
- return Unspecified;
|
||||
+ /* Fallthrough to attempt LANMAN authentication next */
|
||||
+ break;
|
||||
}
|
||||
case CIFS_NEGFLAVOR_LANMAN:
|
||||
switch (requested) {
|
||||
--
|
||||
cgit v0.9.2
|
@ -7,7 +7,13 @@ CONFIG_HW_PERF_EVENTS=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_NFS_FS=y
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RESET_GPIO=y
|
||||
|
||||
CONFIG_RCU_FANOUT_LEAF=16
|
||||
# CONFIG_RTC_DRV_SNVS is not set
|
||||
CONFIG_BACKLIGHT_PWM=m
|
||||
@ -17,6 +23,7 @@ CONFIG_ARM_ARCH_TIMER=y
|
||||
# CONFIG_ARM_DT_BL_CPUFREQ is not set
|
||||
CONFIG_NR_CPUS=8
|
||||
CONFIG_ARM_DMA_USE_IOMMU=y
|
||||
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
||||
|
||||
# ARM AMBA generic HW
|
||||
CONFIG_ARM_AMBA=y
|
||||
@ -44,10 +51,11 @@ CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_DEVICE=y
|
||||
CONFIG_OF_DYNAMIC=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_I2C=y
|
||||
CONFIG_OF_I2C=m
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_MDIO=m
|
||||
CONFIG_OF_MTD=y
|
||||
@ -61,6 +69,7 @@ CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_EXTCON=m
|
||||
CONFIG_OF_EXTCON=m
|
||||
CONFIG_EXTCON_GPIO=m
|
||||
CONFIG_EXTCON_ADC_JACK=m
|
||||
|
||||
# MTD
|
||||
CONFIG_MTD_BLKDEVS=m
|
||||
@ -75,14 +84,29 @@ CONFIG_MTD_OF_PARTS=m
|
||||
CONFIG_MTD_PHYSMAP=m
|
||||
CONFIG_MTD_PHYSMAP_OF=m
|
||||
# CONFIG_MTD_PHYSMAP_COMPAT is not set
|
||||
CONFIG_OF_MTD=y
|
||||
|
||||
# GPIO
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
CONFIG_GPIO_DEVRES=y
|
||||
CONFIG_GPIO_GENERIC=m
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_MDIO_GPIO=m
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
CONFIG_POWER_RESET_RESTART=y
|
||||
|
||||
#i2c
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_GPIO=m
|
||||
CONFIG_I2C_MUX=m
|
||||
# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
|
||||
CONFIG_I2C_MUX_GPIO=m
|
||||
CONFIG_I2C_MUX_PINCTRL=m
|
||||
CONFIG_I2C_MUX_PCA9541=m
|
||||
|
||||
# Sensors
|
||||
CONFIG_SENSORS_IIO_HWMON=m
|
||||
CONFIG_IIO_SYSFS_TRIGGER=m
|
||||
|
||||
# MFD
|
||||
CONFIG_MFD_CORE=m
|
||||
@ -101,9 +125,6 @@ CONFIG_SMC911X=m
|
||||
# CONFIG_IRQ_DOMAIN_DEBUG is not set
|
||||
# CONFIG_LEDS_RENESAS_TPU is not set
|
||||
# CONFIG_LOCK_STAT is not set
|
||||
# CONFIG_PCIEPORTBUS is not set
|
||||
|
||||
CONFIG_I2C=y
|
||||
|
||||
### turn off things which make no sense on embedded SoC
|
||||
|
||||
|
33
config-arm64
33
config-arm64
@ -30,7 +30,6 @@ CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_IO=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GPIO_DEVRES=y
|
||||
CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
@ -67,7 +66,6 @@ CONFIG_VM_EVENT_COUNTERS=y
|
||||
# not arm64
|
||||
# CONFIG_HW_RANDOM_ATMEL is not set
|
||||
# CONFIG_HW_RANDOM_EXYNOS is not set
|
||||
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
||||
# CONFIG_GPIO_ADNP is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
# CONFIG_MDIO_BUS_MUX_GPIO is not set
|
||||
@ -81,33 +79,4 @@ CONFIG_VM_EVENT_COUNTERS=y
|
||||
# dma issues in headers
|
||||
# CONFIG_PARPORT_PC is not set
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
|
||||
# CONFIG_CHARGER_MAX8997 is not set
|
||||
# CONFIG_MFD_AS3711 is not set
|
||||
# CONFIG_PMIC_ADP5520 is not set
|
||||
# CONFIG_MFD_AAT2870_CORE is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_DA9052_I2C is not set
|
||||
# CONFIG_MFD_DA9055 is not set
|
||||
# CONFIG_MFD_88PM800 is not set
|
||||
# CONFIG_MFD_88PM805 is not set
|
||||
# CONFIG_MFD_MAX77686 is not set
|
||||
# CONFIG_MFD_MAX77693 is not set
|
||||
# CONFIG_MFD_MAX8907 is not set
|
||||
# CONFIG_MFD_RC5T583 is not set
|
||||
# CONFIG_MFD_SMSC is not set
|
||||
# CONFIG_MFD_LP8788 is not set
|
||||
# CONFIG_MFD_PALMAS is not set
|
||||
# CONFIG_MFD_TPS65090 is not set
|
||||
# CONFIG_MFD_TPS65910 is not set
|
||||
# CONFIG_MFD_TPS65912_I2C is not set
|
||||
# CONFIG_MFD_TPS80031 is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_TWL6040_CORE is not set
|
||||
# CONFIG_REGULATOR_LP872X is not set
|
||||
# CONFIG_REGULATOR_S2MPS11 is not set
|
||||
# CONFIG_LEDS_MAX8997 is not set
|
||||
# CONFIG_RTC_DRV_MAX8997 is not set
|
||||
# CONFIG_EXTCON_MAX8997 is not set
|
||||
# CONFIG_MFD_MAX8997 is not set
|
||||
# CONFIG_MFD_SEC_CORE is not set
|
||||
CONFIG_POWER_RESET_XGENE=y
|
||||
|
120
config-armv7
120
config-armv7
@ -10,7 +10,7 @@ CONFIG_ARCH_ROCKCHIP=y
|
||||
CONFIG_ARCH_SOCFPGA=y
|
||||
CONFIG_ARCH_SUNXI=y
|
||||
CONFIG_ARCH_TEGRA=y
|
||||
# CONFIG_ARCH_U8500 is not set
|
||||
CONFIG_ARCH_U8500=y
|
||||
# CONFIG_ARCH_VIRT is not set
|
||||
CONFIG_ARCH_ZYNQ=y
|
||||
|
||||
@ -19,9 +19,6 @@ CONFIG_ARCH_ZYNQ=y
|
||||
# CONFIG_XEN is not set
|
||||
# CONFIG_ARM_VIRT_EXT is not set
|
||||
|
||||
# Generic
|
||||
CONFIG_REMOTEPROC=m
|
||||
|
||||
# mvebu
|
||||
CONFIG_MACH_ARMADA_370_XP=y
|
||||
CONFIG_MACH_ARMADA_370=y
|
||||
@ -58,12 +55,11 @@ CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
|
||||
CONFIG_ARCH_OMAP3=y
|
||||
CONFIG_ARCH_OMAP4=y
|
||||
CONFIG_SOC_OMAP5=y
|
||||
# CONFIG_SOC_DRA7XX is not set
|
||||
# CONFIG_SOC_OMAP2420 is not set
|
||||
# CONFIG_SOC_OMAP2430 is not set
|
||||
CONFIG_SOC_OMAP3430=y
|
||||
CONFIG_SOC_TI81XX=y
|
||||
CONFIG_SOC_AM33XX=y
|
||||
CONFIG_SOC_AM43XX=y
|
||||
CONFIG_MACH_OMAP_GENERIC=y
|
||||
CONFIG_MACH_OMAP3_BEAGLE=y
|
||||
CONFIG_MACH_DEVKIT8000=y
|
||||
@ -71,8 +67,8 @@ CONFIG_MACH_OMAP_LDP=y
|
||||
CONFIG_MACH_OMAP3530_LV_SOM=y
|
||||
CONFIG_MACH_OMAP3_TORPEDO=y
|
||||
CONFIG_MACH_OVERO=y
|
||||
CONFIG_MACH_OMAP3EVM=y
|
||||
CONFIG_MACH_OMAP3517EVM=y
|
||||
# CONFIG_MACH_OMAP3EVM is not set
|
||||
# CONFIG_MACH_OMAP3517EVM is not set
|
||||
CONFIG_MACH_CRANEBOARD=y
|
||||
CONFIG_MACH_OMAP3_PANDORA=y
|
||||
CONFIG_MACH_TOUCHBOOK=y
|
||||
@ -87,8 +83,8 @@ CONFIG_MACH_CM_T3517=y
|
||||
CONFIG_MACH_IGEP0030=y
|
||||
CONFIG_MACH_SBC3530=y
|
||||
CONFIG_MACH_OMAP_3630SDP=y
|
||||
CONFIG_MACH_TI8168EVM=y
|
||||
CONFIG_MACH_TI8148EVM=y
|
||||
# CONFIG_MACH_TI8168EVM is not set
|
||||
# CONFIG_MACH_TI8148EVM is not set
|
||||
|
||||
CONFIG_SOC_HAS_REALTIME_COUNTER=y
|
||||
CONFIG_OMAP_RESET_CLOCKS=y
|
||||
@ -113,17 +109,6 @@ CONFIG_OMAP3_EMU=y
|
||||
CONFIG_OMAP_WATCHDOG=m
|
||||
CONFIG_TWL4030_WATCHDOG=m
|
||||
|
||||
CONFIG_TI_ST=m
|
||||
CONFIG_TI_EDMA=y
|
||||
CONFIG_TI_DAC7512=m
|
||||
CONFIG_TI_DAVINCI_EMAC=y
|
||||
CONFIG_TI_DAVINCI_MDIO=y
|
||||
CONFIG_TI_DAVINCI_CPDMA=y
|
||||
CONFIG_TI_CPSW=y
|
||||
CONFIG_TI_CPTS=y
|
||||
CONFIG_TI_EMIF=m
|
||||
CONFIG_REGULATOR_TI_ABB=y
|
||||
|
||||
CONFIG_SERIAL_OMAP=y
|
||||
CONFIG_SERIAL_OMAP_CONSOLE=y
|
||||
|
||||
@ -136,31 +121,26 @@ CONFIG_TWL4030_CORE=y
|
||||
CONFIG_TWL4030_MADC=m
|
||||
CONFIG_TWL4030_POWER=y
|
||||
CONFIG_TWL4030_WATCHDOG=m
|
||||
CONFIG_BATTERY_TWL4030_MADC=m
|
||||
CONFIG_OMAP_USB2=m
|
||||
CONFIG_OMAP_USB3=m
|
||||
CONFIG_TWL4030_USB=m
|
||||
CONFIG_TWL6030_USB=m
|
||||
CONFIG_TWL6030_PWM=m
|
||||
CONFIG_TWL6040_CORE=y
|
||||
CONFIG_CLK_TWL6040=m
|
||||
CONFIG_OMAP_INTERCONNECT=m
|
||||
CONFIG_MFD_TI_AM335X_TSCADC=y
|
||||
CONFIG_MFD_OMAP_USB_HOST=y
|
||||
CONFIG_MTD_ONENAND_OMAP2=m
|
||||
CONFIG_HDQ_MASTER_OMAP=m
|
||||
CONFIG_REGULATOR_TWL4030=y
|
||||
CONFIG_BACKLIGHT_PANDORA=m
|
||||
CONFIG_OMAP_OCP2SCP=m
|
||||
CONFIG_OMAP_USB2=m
|
||||
CONFIG_OMAP_USB3=m
|
||||
CONFIG_USB_EHCI_HCD_OMAP=m
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=m
|
||||
CONFIG_USB_OHCI_HCD_OMAP3=y
|
||||
CONFIG_USB_MUSB_AM35X=m
|
||||
CONFIG_USB_MUSB_OMAP2PLUS=m
|
||||
CONFIG_USB_TI_CPPI41_DMA=m
|
||||
CONFIG_AM335X_PHY_USB=m
|
||||
CONFIG_USB_MUSB_HDRC=m
|
||||
# CONFIG_USB_GADGET_MUSB_HDRC is not set
|
||||
# CONFIG_USB_MUSB_DEBUG is not set
|
||||
CONFIG_OMAP_CONTROL_USB=m
|
||||
CONFIG_MMC_OMAP=y
|
||||
CONFIG_MMC_OMAP_HS=y
|
||||
@ -169,6 +149,7 @@ CONFIG_RTC_DRV_MAX8907=m
|
||||
CONFIG_RTC_DRV_TWL4030=y
|
||||
CONFIG_RTC_DRV_OMAP=y
|
||||
CONFIG_SENSORS_TWL4030_MADC=m
|
||||
CONFIG_TWL6030_GPADC=m
|
||||
|
||||
# OMAP5 (possibly other devices too)
|
||||
CONFIG_MFD_PALMAS=y
|
||||
@ -181,19 +162,16 @@ CONFIG_GPIO_PALMAS=y
|
||||
CONFIG_WL_TI=y
|
||||
CONFIG_WLCORE_SDIO=m
|
||||
CONFIG_WLCORE_SPI=m
|
||||
CONFIG_WL1251_SPI=m
|
||||
CONFIG_WL12XX_SPI=m
|
||||
CONFIG_WL12XX_SDIO_TEST=m
|
||||
CONFIG_WL18XX=m
|
||||
CONFIG_WILINK_PLATFORM_DATA=y
|
||||
CONFIG_MFD_WL1273_CORE=m
|
||||
CONFIG_NFC_WILINK=m
|
||||
|
||||
CONFIG_MTD_NAND_OMAP2=m
|
||||
CONFIG_SPI_DAVINCI=m
|
||||
CONFIG_SPI_OMAP24XX=m
|
||||
CONFIG_MFD_TI_SSP=m
|
||||
CONFIG_SPI_TI_SSP=m
|
||||
CONFIG_SPI_TI_QSPI=m
|
||||
|
||||
CONFIG_INPUT_TWL4030_PWRBUTTON=m
|
||||
CONFIG_INPUT_TWL4030_VIBRA=m
|
||||
@ -225,7 +203,6 @@ CONFIG_CRYPTO_DEV_OMAP_SHAM=m
|
||||
CONFIG_CRYPTO_DEV_OMAP_AES=m
|
||||
CONFIG_HW_RANDOM_OMAP=m
|
||||
|
||||
CONFIG_DRM_TILCDC=m
|
||||
CONFIG_DRM_OMAP=m
|
||||
CONFIG_DRM_OMAP_NUM_CRTCS=2
|
||||
CONFIG_OMAP2_VRFB=y
|
||||
@ -248,17 +225,6 @@ CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
|
||||
CONFIG_OMAP2_DSS_SLEEP_BEFORE_RESET=y
|
||||
CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
|
||||
|
||||
CONFIG_PANEL_GENERIC_DPI=m
|
||||
CONFIG_PANEL_TFP410=m
|
||||
CONFIG_PANEL_SHARP_LS037V7DW01=m
|
||||
CONFIG_PANEL_PICODLP=m
|
||||
CONFIG_PANEL_TAAL=m
|
||||
CONFIG_PANEL_NEC_NL8048HL11_01B=m
|
||||
CONFIG_PANEL_TPO_TD043MTEA1=m
|
||||
CONFIG_PANEL_LGPHILIPS_LB035Q02=m
|
||||
CONFIG_PANEL_ACX565AKM=m
|
||||
# CONFIG_PANEL_N8X0 is not set
|
||||
|
||||
CONFIG_DISPLAY_ENCODER_TFP410=m
|
||||
CONFIG_DISPLAY_ENCODER_TPD12S015=m
|
||||
CONFIG_DISPLAY_CONNECTOR_DVI=m
|
||||
@ -293,6 +259,7 @@ CONFIG_SND_OMAP_SOC=m
|
||||
CONFIG_SND_SOC_I2C_AND_SPI=m
|
||||
CONFIG_SND_OMAP_SOC_AM3517EVM=m
|
||||
CONFIG_SND_OMAP_SOC_DMIC=m
|
||||
CONFIG_SND_OMAP_SOC_HDMI=m
|
||||
CONFIG_SND_OMAP_SOC_IGEP0020=m
|
||||
CONFIG_SND_OMAP_SOC_MCBSP=m
|
||||
CONFIG_SND_OMAP_SOC_MCPDM=m
|
||||
@ -329,13 +296,43 @@ CONFIG_OMAP_REMOTEPROC=m
|
||||
# CONFIG_OMAP_MUX_DEBUG is not set
|
||||
# CONFIG_VIDEO_OMAP3_DEBUG is not set
|
||||
|
||||
# AM33xx
|
||||
CONFIG_SOC_AM33XX=y
|
||||
CONFIG_SOC_AM43XX=y
|
||||
CONFIG_AM335X_CONTROL_USB=m
|
||||
CONFIG_AM335X_PHY_USB=m
|
||||
CONFIG_USB_MUSB_AM335X_CHILD=y
|
||||
CONFIG_MFD_TI_AM335X_TSCADC=m
|
||||
CONFIG_TI_ST=m
|
||||
CONFIG_TI_DAC7512=m
|
||||
CONFIG_TI_DAVINCI_EMAC=m
|
||||
CONFIG_TI_DAVINCI_MDIO=m
|
||||
CONFIG_TI_DAVINCI_CPDMA=m
|
||||
CONFIG_TI_CPSW=m
|
||||
CONFIG_TI_CPTS=y
|
||||
CONFIG_TI_EMIF=m
|
||||
CONFIG_DRM_TILCDC=m
|
||||
CONFIG_SPI_DAVINCI=m
|
||||
CONFIG_REGULATOR_TI_ABB=m
|
||||
CONFIG_TI_PRIV_EDMA=y
|
||||
CONFIG_TI_EDMA=y
|
||||
# Terribly unstable so disable for now
|
||||
# CONFIG_USB_TI_CPPI41_DMA is not set
|
||||
# CONFIG_TI_CPPI41 is not set
|
||||
CONFIG_MFD_TI_AM335X_TSCADC=m
|
||||
CONFIG_CHARGER_BQ24190=m
|
||||
CONFIG_TI_ADC081C=m
|
||||
CONFIG_TI_AM335X_ADC=m
|
||||
CONFIG_PWM_TIPWMSS=y
|
||||
|
||||
# Allwinner a1x
|
||||
CONFIG_PINCTRL_SUNXI=y
|
||||
CONFIG_SUNXI_WATCHDOG=m
|
||||
CONFIG_MDIO_SUN4I=m
|
||||
CONFIG_NET_VENDOR_ALLWINNER=y
|
||||
CONFIG_SUN4I_EMAC=m
|
||||
|
||||
# imx
|
||||
# i.MX
|
||||
CONFIG_MXC_IRQ_PRIOR=y
|
||||
# CONFIG_MXC_DEBUG_BOARD is not set
|
||||
CONFIG_SOC_IMX53=y
|
||||
@ -345,6 +342,7 @@ CONFIG_MACH_IMX51_DT=y
|
||||
# CONFIG_MACH_MX51_BABBAGE is not set
|
||||
# CONFIG_MACH_EUKREA_CPUIMX51SD is not set
|
||||
CONFIG_ARM_IMX6Q_CPUFREQ=m
|
||||
CONFIG_IMX_THERMAL=m
|
||||
CONFIG_PATA_IMX=m
|
||||
CONFIG_USB_CHIPIDEA=m
|
||||
CONFIG_USB_CHIPIDEA_UDC=y
|
||||
@ -356,6 +354,7 @@ CONFIG_FEC=m
|
||||
CONFIG_KEYBOARD_IMX=m
|
||||
CONFIG_SERIAL_IMX=y
|
||||
CONFIG_SERIAL_IMX_CONSOLE=y
|
||||
CONFIG_PINCTRL_IMX6SL=y
|
||||
CONFIG_I2C_IMX=m
|
||||
CONFIG_SPI_IMX=m
|
||||
CONFIG_MFD_MC13783=m
|
||||
@ -365,6 +364,7 @@ CONFIG_IMX_WEIM=y
|
||||
CONFIG_IMX2_WDT=m
|
||||
CONFIG_HW_RANDOM_MXC_RNGA=m
|
||||
CONFIG_CRYPTO_DEV_SAHARA=m
|
||||
CONFIG_RTC_DRV_SNVS=m
|
||||
# CONFIG_FB_MX3 is not set
|
||||
|
||||
CONFIG_SND_IMX_SOC=m
|
||||
@ -377,6 +377,7 @@ CONFIG_SND_SOC_IMX_PCM_DMA=m
|
||||
CONFIG_SND_SOC_IMX_SGTL5000=m
|
||||
CONFIG_SND_SOC_IMX_WM8962=m
|
||||
CONFIG_SND_SOC_IMX_MC13783=m
|
||||
CONFIG_SND_SOC_IMX_SPDIF=m
|
||||
|
||||
CONFIG_USB_EHCI_MXC=m
|
||||
CONFIG_USB_IMX21_HCD=m
|
||||
@ -398,6 +399,7 @@ CONFIG_PWM_IMX=m
|
||||
CONFIG_BACKLIGHT_PWM=m
|
||||
CONFIG_DRM_IMX=m
|
||||
CONFIG_DRM_IMX_FB_HELPER=m
|
||||
CONFIG_DRM_IMX_HDMI=m
|
||||
CONFIG_DRM_IMX_IPUV3_CORE=m
|
||||
CONFIG_DRM_IMX_IPUV3=m
|
||||
# CONFIG_DRM_IMX_LDB is not set
|
||||
@ -412,6 +414,7 @@ CONFIG_REGULATOR_MC13783=m
|
||||
CONFIG_REGULATOR_MC13892=m
|
||||
CONFIG_LEDS_MC13783=m
|
||||
CONFIG_RTC_DRV_MC13XXX=m
|
||||
CONFIG_CAN_FLEXCAN=m
|
||||
|
||||
CONFIG_INPUT_PWM_BEEPER=m
|
||||
CONFIG_INPUT_88PM80X_ONKEY=m
|
||||
@ -437,11 +440,6 @@ CONFIG_RTC_DRV_DA9055=m
|
||||
CONFIG_REGULATOR_DA9052=m
|
||||
CONFIG_REGULATOR_DA9055=m
|
||||
|
||||
# exynos
|
||||
# CONFIG_DRM_EXYNOS is not set
|
||||
# CONFIG_PINCTRL_EXYNOS5440 is not set
|
||||
# CONFIG_PINCTRL_EXYNOS is not set
|
||||
|
||||
# picoxcell
|
||||
CONFIG_CRYPTO_DEV_PICOXCELL=m
|
||||
CONFIG_HW_RANDOM_PICOXCELL=m
|
||||
@ -452,6 +450,7 @@ CONFIG_MACH_SNOWBALL=y
|
||||
CONFIG_MACH_UX500_DT=y
|
||||
|
||||
CONFIG_ABX500_CORE=y
|
||||
CONFIG_ARM_U8500_CPUIDLE=y
|
||||
CONFIG_UX500_DEBUG_UART=2
|
||||
CONFIG_AB8500_CORE=y
|
||||
CONFIG_STE_DMA40=y
|
||||
@ -485,6 +484,19 @@ CONFIG_CW1200=m
|
||||
CONFIG_CW1200_WLAN_SDIO=m
|
||||
CONFIG_CW1200_WLAN_SPI=m
|
||||
CONFIG_UX500_WATCHDOG=m
|
||||
CONFIG_IIO_ST_ACCEL_3AXIS=m
|
||||
CONFIG_IIO_ST_GYRO_3AXIS=m
|
||||
CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
|
||||
CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
|
||||
CONFIG_IIO_ST_MAGN_3AXIS=m
|
||||
CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
|
||||
CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
|
||||
CONFIG_IIO_ST_PRESS=m
|
||||
CONFIG_IIO_ST_PRESS_I2C=m
|
||||
CONFIG_IIO_ST_PRESS_SPI=m
|
||||
CONFIG_IIO_ST_SENSORS_I2C=m
|
||||
CONFIG_IIO_ST_SENSORS_SPI=m
|
||||
CONFIG_IIO_ST_SENSORS_CORE=m
|
||||
|
||||
# tegra
|
||||
CONFIG_ARCH_TEGRA_2x_SOC=y
|
||||
@ -496,7 +508,7 @@ CONFIG_TEGRA30_MC=y
|
||||
|
||||
CONFIG_SERIAL_TEGRA=y
|
||||
|
||||
CONFIG_TEGRA_PCI=y
|
||||
CONFIG_PCI_TEGRA=y
|
||||
CONFIG_TEGRA_IOMMU_GART=y
|
||||
CONFIG_TEGRA_IOMMU_SMMU=y
|
||||
CONFIG_MMC_SDHCI_TEGRA=m
|
||||
@ -567,7 +579,7 @@ CONFIG_SERIAL_UARTLITE_CONSOLE=y
|
||||
CONFIG_SERIAL_XILINX_PS_UART=y
|
||||
CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
|
||||
CONFIG_COMMON_CLK_AXI_CLKGEN=m
|
||||
CONFIG_CPU_IDLE_ZYNQ=y
|
||||
CONFIG_ARM_ZYNQ_CPUIDLE=y
|
||||
CONFIG_LATTICE_ECP3_CONFIG=m
|
||||
CONFIG_NET_VENDOR_XILINX=y
|
||||
CONFIG_XILINX_EMACLITE=m
|
||||
@ -582,6 +594,7 @@ CONFIG_MFD_T7L66XB=y
|
||||
CONFIG_MFD_TC6387XB=y
|
||||
|
||||
# Generic drivers
|
||||
CONFIG_REMOTEPROC=m
|
||||
|
||||
# Regulator drivers
|
||||
CONFIG_REGULATOR_FAN53555=m
|
||||
@ -634,7 +647,6 @@ CONFIG_REGULATOR_MAX8973=m
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
|
||||
# CONFIG_VIRTUALIZATION is not set
|
||||
# CONFIG_CHARGER_MANAGER is not set
|
||||
# CONFIG_POWER_RESET_QNAP is not set
|
||||
# CONFIG_OMAP2_DSS_DEBUG is not set
|
||||
# CONFIG_DRM_TEGRA_DEBUG is not set
|
||||
|
@ -14,6 +14,7 @@ CONFIG_AEABI=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_VFPv3=y
|
||||
CONFIG_NEON=y
|
||||
CONFIG_KERNEL_MODE_NEON=y
|
||||
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_ARM_THUMB=y
|
||||
@ -56,14 +57,15 @@ CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
|
||||
# CONFIG_ARCH_SIRF is not set
|
||||
# CONFIG_ARCH_U8500 is not set
|
||||
# CONFIG_ARCH_WM8850 is not set
|
||||
# CONFIG_ARCH_SHMOBILE_MULTI is not set
|
||||
|
||||
# highbank
|
||||
# 2013/04/19 - stability issues
|
||||
# CONFIG_CPU_IDLE_CALXEDA is not set
|
||||
CONFIG_EDAC_HIGHBANK_MC=m
|
||||
CONFIG_EDAC_HIGHBANK_L2=m
|
||||
CONFIG_SATA_HIGHBANK=m
|
||||
CONFIG_ARM_HIGHBANK_CPUFREQ=m
|
||||
CONFIG_ARM_HIGHBANK_CPUIDLE=y
|
||||
|
||||
# errata
|
||||
# v5/v6
|
||||
@ -93,6 +95,7 @@ CONFIG_PL310_ERRATA_769419=y
|
||||
CONFIG_PJ4B_ERRATA_4742=y
|
||||
# Cortex-A15
|
||||
# CONFIG_ARM_ERRATA_798181 is not set
|
||||
# CONFIG_ARM_ERRATA_773022 is not set
|
||||
|
||||
# generic that deviates from or should be merged into config-generic
|
||||
CONFIG_SMP_ON_UP=y
|
||||
@ -104,13 +107,10 @@ CONFIG_SCHED_SMT=y
|
||||
|
||||
CONFIG_RCU_FANOUT=32
|
||||
|
||||
CONFIG_VIRTIO_CONSOLE=m
|
||||
|
||||
# 2013/04/19 - disable due to stability issues in 3.9 for the moment
|
||||
# CONFIG_CPU_IDLE is not set
|
||||
## CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
# CONFIG_CPU_IDLE_GOV_MENU is not set
|
||||
# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
|
||||
CONFIG_CPU_IDLE=y
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
|
||||
|
||||
# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
|
||||
|
||||
@ -138,7 +138,6 @@ CONFIG_LBDAF=y
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_ARM_ATAG_DTB_COMPAT=y
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
CONFIG_I2C_MUX_PINCTRL=m
|
||||
|
||||
# General vexpress ARM drivers
|
||||
CONFIG_ARM_TIMER_SP804=y
|
||||
@ -156,6 +155,7 @@ CONFIG_PL330_DMA=m
|
||||
CONFIG_AMBA_PL08X=y
|
||||
CONFIG_ARM_SP805_WATCHDOG=m
|
||||
CONFIG_GPIO_PL061=y
|
||||
CONFIG_PL320_MBOX=y
|
||||
|
||||
# usb
|
||||
CONFIG_USB_OTG=y
|
||||
@ -240,6 +240,7 @@ CONFIG_PINMUX=y
|
||||
CONFIG_PINCONF=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_SINGLE=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
# CONFIG_PINCTRL_SAMSUNG is not set
|
||||
# CONFIG_PINCTRL_EXYNOS4 is not set
|
||||
|
||||
@ -248,7 +249,6 @@ CONFIG_GPIO_GENERIC_PLATFORM=m
|
||||
# CONFIG_GPIO_EM is not set
|
||||
CONFIG_GPIO_ADNP=m
|
||||
CONFIG_GPIO_MCP23S08=m
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
CONFIG_SERIAL_8250_EM=m
|
||||
CONFIG_INPUT_GPIO_TILT_POLLED=m
|
||||
CONFIG_MDIO_BUS_MUX_GPIO=m
|
||||
@ -302,9 +302,11 @@ CONFIG_MPCORE_WATCHDOG=m
|
||||
|
||||
# Thermal / powersaving
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_POWER_RESET_RESTART=y
|
||||
CONFIG_ARM_PSCI=y
|
||||
|
||||
# Mailbox
|
||||
CONFIG_MAILBOX=y
|
||||
|
||||
# MTD
|
||||
# CONFIG_MG_DISK is not set
|
||||
CONFIG_MTD_DATAFLASH=m
|
||||
@ -328,20 +330,28 @@ CONFIG_SPI_DW_PCI=m
|
||||
# CONFIG_MMC_DW_EXYNOS is not set
|
||||
# CONFIG_MMC_DW_IDMAC is not set
|
||||
CONFIG_USB_DWC2=m
|
||||
# CONFIG_USB_DWC2_DEBUG is not set
|
||||
# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
|
||||
CONFIG_USB_DWC3=m
|
||||
CONFIG_USB_DWC3_OMAP=m
|
||||
CONFIG_USB_DWC3_EXYNOS=m
|
||||
CONFIG_USB_DWC3_PCI=m
|
||||
# CONFIG_USB_DWC3_DEBUG is not set
|
||||
CONFIG_DW_WATCHDOG=m
|
||||
|
||||
# Sound
|
||||
CONFIG_SND_ARM=y
|
||||
CONFIG_SND_ARMAACI=m
|
||||
CONFIG_SND_SOC=m
|
||||
CONFIG_SND_SPI=y
|
||||
CONFIG_SND_ARM=y
|
||||
CONFIG_SND_ARMAACI=m
|
||||
CONFIG_SND_COMPRESS_OFFLOAD=m
|
||||
CONFIG_SND_DESIGNWARE_I2S=m
|
||||
CONFIG_SND_DMAENGINE_PCM=m
|
||||
CONFIG_SND_JACK=y
|
||||
CONFIG_SND_SIMPLE_CARD=m
|
||||
CONFIG_SND_SOC_CACHE_LZO=y
|
||||
CONFIG_SND_SOC_ALL_CODECS=m
|
||||
CONFIG_SND_SOC_DMAENGINE_PCM=y
|
||||
CONFIG_SND_SOC_CACHE_LZO=y
|
||||
CONFIG_SND_SOC_DMIC=m
|
||||
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
|
||||
# CONFIG_SND_ATMEL_SOC is not set
|
||||
|
||||
@ -365,10 +375,8 @@ CONFIG_RTC_DRV_TPS80031=m
|
||||
# Regulators
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_RFKILL_REGULATOR=m
|
||||
CONFIG_CHARGER_MANAGER=y
|
||||
# CONFIG_REGULATOR_DUMMY is not set
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=m
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=m
|
||||
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
|
||||
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
|
||||
CONFIG_REGULATOR_GPIO=m
|
||||
@ -378,6 +386,7 @@ CONFIG_REGULATOR_FAN53555=m
|
||||
CONFIG_REGULATOR_ISL6271A=m
|
||||
CONFIG_REGULATOR_LP3971=m
|
||||
CONFIG_REGULATOR_LP3972=m
|
||||
CONFIG_REGULATOR_LP872X=m
|
||||
CONFIG_REGULATOR_LP8755=m
|
||||
CONFIG_REGULATOR_MAX1586=m
|
||||
CONFIG_REGULATOR_MAX8649=m
|
||||
@ -396,16 +405,25 @@ CONFIG_REGULATOR_TPS6586X=m
|
||||
CONFIG_REGULATOR_TPS65910=m
|
||||
CONFIG_REGULATOR_TPS65912=m
|
||||
CONFIG_REGULATOR_TPS80031=m
|
||||
CONFIG_CHARGER_TPS65090=m
|
||||
|
||||
CONFIG_CHARGER_MANAGER=y
|
||||
CONFIG_CHARGER_TPS65090=m
|
||||
CONFIG_PDA_POWER=m
|
||||
CONFIG_GENERIC_ADC_BATTERY=m
|
||||
|
||||
# Sensors
|
||||
CONFIG_TMP006=m
|
||||
CONFIG_BMP085=y
|
||||
CONFIG_BMP085_I2C=m
|
||||
CONFIG_BMP085_SPI=m
|
||||
CONFIG_SENSORS_AD7314=m
|
||||
CONFIG_SENSORS_ADCXX=m
|
||||
CONFIG_SENSORS_LM70=m
|
||||
CONFIG_SENSORS_MAX1111=m
|
||||
CONFIG_SENSORS_ADS7871=m
|
||||
CONFIG_SENSORS_LIS3_SPI=m
|
||||
CONFIG_SENSORS_GPIO_FAN=m
|
||||
CONFIG_SENSORS_HTU21=m
|
||||
CONFIG_SENSORS_LIS3_SPI=m
|
||||
CONFIG_SENSORS_LM70=m
|
||||
CONFIG_SENSORS_MAX1111=m
|
||||
|
||||
CONFIG_LCD_L4F00242T03=m
|
||||
CONFIG_LCD_LMS283GF05=m
|
||||
@ -434,9 +452,10 @@ CONFIG_LEDS_DAC124S085=m
|
||||
CONFIG_LEDS_PWM=m
|
||||
CONFIG_BMP085_SPI=m
|
||||
|
||||
# Display
|
||||
|
||||
# Contiguous Memory Allocator
|
||||
CONFIG_OF_RESERVED_MEM=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_DMA_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=16
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
@ -445,6 +464,7 @@ CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=7
|
||||
CONFIG_SRAM=y
|
||||
|
||||
# Ethernet
|
||||
CONFIG_KS8851=m
|
||||
@ -479,6 +499,9 @@ CONFIG_UBIFS_FS_LZO=y
|
||||
CONFIG_UBIFS_FS_ZLIB=y
|
||||
# CONFIG_UBIFS_FS_DEBUG is not set
|
||||
|
||||
# Sensors
|
||||
CONFIG_SENSORS_HTU21=m
|
||||
|
||||
# Should be in generic
|
||||
CONFIG_BPF_JIT=y
|
||||
# CONFIG_NET_VENDOR_CIRRUS is not set
|
||||
@ -512,6 +535,7 @@ CONFIG_BPF_JIT=y
|
||||
# CONFIG_COMMON_CLK_AXI_CLKGEN is not set
|
||||
# CONFIG_SPI_TOPCLIFF_PCH is not set
|
||||
# CONFIG_SPI_PXA2XX is not set
|
||||
# CONFIG_SPI_FSL_DSPI is not set
|
||||
|
||||
# these modules all fail with missing __bad_udelay
|
||||
# http://www.spinics.net/lists/arm/msg15615.html provides some background
|
||||
|
@ -32,6 +32,7 @@ CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
|
||||
|
||||
# Cortex-A15
|
||||
CONFIG_ARM_ERRATA_798181=y
|
||||
CONFIG_ARM_ERRATA_773022=y
|
||||
|
||||
CONFIG_KVM=y
|
||||
CONFIG_KVM_ARM_HOST=y
|
||||
@ -65,7 +66,9 @@ CONFIG_SERIAL_SAMSUNG_CONSOLE=y
|
||||
CONFIG_SOC_EXYNOS5250=y
|
||||
CONFIG_SOC_EXYNOS5420=y
|
||||
CONFIG_SOC_EXYNOS5440=y
|
||||
CONFIG_ARM_EXYNOS_CPUFREQ=y
|
||||
# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set
|
||||
# CONFIG_ARM_EXYNOS5440_CPUFREQ is not set
|
||||
# CONFIG_ARM_EXYNOS_CPUFREQ is not set
|
||||
# CONFIG_GENERIC_CPUFREQ_CPU0 is not set
|
||||
CONFIG_EXYNOS_THERMAL=m
|
||||
CONFIG_PCI_EXYNOS=y
|
||||
@ -134,31 +137,6 @@ CONFIG_S3C_LOWLEVEL_UART_PORT=1
|
||||
# CONFIG_S3C2410_WATCHDOG is not set
|
||||
# CONFIG_MMC_SDHCI_S3C is not set
|
||||
# CONFIG_TEGRA_HOST1X is not set
|
||||
|
||||
# CONFIG_CHARGER_MAX8997 is not set
|
||||
# CONFIG_MFD_AS3711 is not set
|
||||
# CONFIG_PMIC_ADP5520 is not set
|
||||
# CONFIG_MFD_AAT2870_CORE is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_DA9052_I2C is not set
|
||||
# CONFIG_MFD_DA9055 is not set
|
||||
# CONFIG_MFD_88PM800 is not set
|
||||
# CONFIG_MFD_88PM805 is not set
|
||||
# CONFIG_MFD_MAX77686 is not set
|
||||
# CONFIG_MFD_MAX77693 is not set
|
||||
# CONFIG_MFD_MAX8907 is not set
|
||||
# CONFIG_MFD_RC5T583 is not set
|
||||
# CONFIG_MFD_SMSC is not set
|
||||
# CONFIG_MFD_LP8788 is not set
|
||||
# CONFIG_MFD_PALMAS is not set
|
||||
# CONFIG_MFD_TPS65090 is not set
|
||||
# CONFIG_MFD_TPS65910 is not set
|
||||
# CONFIG_MFD_TPS65912_I2C is not set
|
||||
# CONFIG_MFD_TPS80031 is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_TWL6040_CORE is not set
|
||||
# CONFIG_REGULATOR_LP872X is not set
|
||||
# CONFIG_REGULATOR_S2MPS11 is not set
|
||||
# CONFIG_LEDS_MAX8997 is not set
|
||||
# CONFIG_RTC_DRV_MAX8997 is not set
|
||||
# CONFIG_EXTCON_MAX8997 is not set
|
||||
# CONFIG_SPI_DAVINCI is not set
|
||||
# CONFIG_I2C_DAVINCI is not set
|
||||
# CONFIG_TI_SOC_THERMAL is not set
|
||||
|
203
config-generic
203
config-generic
@ -61,6 +61,8 @@ CONFIG_PID_NS=y
|
||||
CONFIG_UTS_NS=y
|
||||
CONFIG_IPC_NS=y
|
||||
CONFIG_NET_NS=y
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_UIDGID_STRICT_TYPE_CHECKS is not set
|
||||
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
@ -146,6 +148,7 @@ CONFIG_MMC_VUB300=m
|
||||
# CONFIG_MMC_SDHCI_PXAV2 is not set
|
||||
# CONFIG_MMC_SDHCI_PXAV3 is not set
|
||||
|
||||
|
||||
CONFIG_CB710_CORE=m
|
||||
# CONFIG_CB710_DEBUG is not set
|
||||
|
||||
@ -160,6 +163,7 @@ CONFIG_INFINIBAND_SRP=m
|
||||
CONFIG_INFINIBAND_SRPT=m
|
||||
CONFIG_INFINIBAND_USER_MAD=m
|
||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||
# CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING is not set #staging
|
||||
CONFIG_INFINIBAND_IPATH=m
|
||||
CONFIG_INFINIBAND_ISER=m
|
||||
CONFIG_INFINIBAND_ISERT=m
|
||||
@ -205,6 +209,7 @@ CONFIG_EXTRA_FIRMWARE=""
|
||||
# CONFIG_FW_LOADER_USER_HELPER is not set
|
||||
|
||||
# CONFIG_CMA is not set
|
||||
# CONFIG_DMA_CMA is not set
|
||||
|
||||
# CONFIG_SPI is not set
|
||||
|
||||
@ -331,6 +336,7 @@ CONFIG_BLK_DEV_BSG=y
|
||||
CONFIG_BLK_DEV_BSGLIB=y
|
||||
CONFIG_BLK_DEV_INTEGRITY=y
|
||||
CONFIG_BLK_DEV_THROTTLING=y
|
||||
# CONFIG_BLK_CMDLINE_PARSER is not set
|
||||
|
||||
|
||||
#
|
||||
@ -438,6 +444,7 @@ CONFIG_MEGARAID_MM=m
|
||||
CONFIG_MEGARAID_MAILBOX=m
|
||||
CONFIG_MEGARAID_LEGACY=m
|
||||
CONFIG_MEGARAID_SAS=m
|
||||
CONFIG_SCSI_ESAS2R=m
|
||||
CONFIG_SCSI_MVSAS=m
|
||||
# CONFIG_SCSI_MVSAS_DEBUG is not set
|
||||
CONFIG_SCSI_MVSAS_TASKLET=y
|
||||
@ -935,6 +942,7 @@ CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_LOG=m
|
||||
CONFIG_IP_NF_TARGET_ULOG=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=y
|
||||
CONFIG_IP_NF_TARGET_SYNPROXY=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
CONFIG_NF_NAT_IPV4=m
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
@ -968,6 +976,7 @@ CONFIG_IP6_NF_RAW=m
|
||||
CONFIG_IP6_NF_SECURITY=m
|
||||
CONFIG_IP6_NF_TARGET_LOG=m
|
||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_TARGET_SYNPROXY=m
|
||||
CONFIG_IP6_NF_TARGET_HL=m
|
||||
CONFIG_NF_NAT_IPV6=m
|
||||
CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
||||
@ -1097,6 +1106,7 @@ CONFIG_NET_SCH_CHOKE=m
|
||||
CONFIG_NET_SCH_QFQ=m
|
||||
CONFIG_NET_SCH_CODEL=m
|
||||
CONFIG_NET_SCH_FQ_CODEL=m
|
||||
CONFIG_NET_SCH_FQ=m
|
||||
CONFIG_NET_SCH_PLUG=m
|
||||
CONFIG_NET_CLS=y
|
||||
CONFIG_NET_CLS_ACT=y
|
||||
@ -1143,6 +1153,7 @@ CONFIG_BATMAN_ADV_NC=y
|
||||
# CONFIG_BATMAN_ADV_DEBUG is not set
|
||||
CONFIG_OPENVSWITCH=m
|
||||
CONFIG_OPENVSWITCH_GRE=y
|
||||
CONFIG_OPENVSWITCH_VXLAN=y
|
||||
CONFIG_VSOCKETS=m
|
||||
CONFIG_NETPRIO_CGROUP=m
|
||||
|
||||
@ -1331,7 +1342,7 @@ CONFIG_IXGBE_DCA=y
|
||||
CONFIG_IXGBE_DCB=y
|
||||
CONFIG_IXGBE_HWMON=y
|
||||
CONFIG_IXGBE_PTP=y
|
||||
|
||||
CONFIG_I40E=m
|
||||
|
||||
# CONFIG_NET_VENDOR_I825XX is not set
|
||||
CONFIG_NET_VENDOR_MARVELL=y
|
||||
@ -1376,6 +1387,7 @@ CONFIG_NET_VENDOR_QLOGIC=y
|
||||
CONFIG_QLA3XXX=m
|
||||
CONFIG_QLCNIC=m
|
||||
CONFIG_QLCNIC_SRIOV=y
|
||||
CONFIG_QLCNIC_DCB=y
|
||||
CONFIG_QLGE=m
|
||||
CONFIG_NETXEN_NIC=m
|
||||
|
||||
@ -1679,6 +1691,7 @@ CONFIG_RT2500USB=m
|
||||
CONFIG_RT2800USB=m
|
||||
CONFIG_RT2800USB_RT33XX=y
|
||||
CONFIG_RT2800USB_RT35XX=y
|
||||
CONFIG_RT2800USB_RT3573=y
|
||||
CONFIG_RT2800USB_RT53XX=y
|
||||
CONFIG_RT2800USB_RT55XX=y
|
||||
CONFIG_RT2800USB_UNKNOWN=y
|
||||
@ -1699,12 +1712,9 @@ CONFIG_USB_NET_SMSC75XX=m
|
||||
CONFIG_ZD1211RW=m
|
||||
# CONFIG_ZD1211RW_DEBUG is not set
|
||||
|
||||
CONFIG_WL12XX_MENU=m
|
||||
CONFIG_WL12XX=m
|
||||
# CONFIG_WL12XX_HT is not set
|
||||
CONFIG_WL12XX_SPI=m
|
||||
CONFIG_WL12XX_SDIO=m
|
||||
# CONFIG_WL12XX_SDIO_TEST is not set
|
||||
|
||||
CONFIG_WL1251=m
|
||||
CONFIG_WL1251_SPI=m
|
||||
@ -2017,6 +2027,7 @@ CONFIG_INPUT_SPARSEKMAP=m
|
||||
# CONFIG_INPUT_IMS_PCU is not set
|
||||
CONFIG_INPUT_CMA3000=m
|
||||
CONFIG_INPUT_CMA3000_I2C=m
|
||||
CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
@ -2200,6 +2211,7 @@ CONFIG_TCG_NSC=m
|
||||
CONFIG_TCG_ATMEL=m
|
||||
# CONFIG_TCG_INFINEON is not set
|
||||
# CONFIG_TCG_ST33_I2C is not set
|
||||
# CONFIG_TCG_XEN is not set
|
||||
CONFIG_TELCLOCK=m
|
||||
|
||||
#
|
||||
@ -2238,6 +2250,13 @@ CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_XILINX_PS_UART is not set
|
||||
# CONFIG_SERIAL_TIMBERDALE is not set
|
||||
CONFIG_SERIAL_ARC=m
|
||||
CONFIG_SERIAL_ARC_NR_PORTS=1
|
||||
# CONFIG_SERIAL_RP2 is not set
|
||||
# CONFIG_SERIAL_FSL_LPUART is not set
|
||||
# CONFIG_SERIAL_ST_ASC is not set
|
||||
# CONFIG_SERIAL_PCH_UART is not set
|
||||
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
@ -2347,10 +2366,12 @@ CONFIG_SENSORS_GL518SM=m
|
||||
CONFIG_SENSORS_GL520SM=m
|
||||
CONFIG_SENSORS_HDAPS=m
|
||||
# CONFIG_SENSORS_HIH6130 is not set
|
||||
# CONFIG_SENSORS_HTU21 is not set
|
||||
# CONFIG_SENSORS_I5K_AMB is not set
|
||||
# FIXME: IBMAEM x86 only?
|
||||
CONFIG_SENSORS_IBMAEM=m
|
||||
CONFIG_SENSORS_IBMPEX=m
|
||||
# CONFIG_SENSORS_IIO_HWMON is not set
|
||||
CONFIG_SENSORS_IT87=m
|
||||
CONFIG_SENSORS_K8TEMP=m
|
||||
CONFIG_SENSORS_K10TEMP=m
|
||||
@ -2452,17 +2473,125 @@ CONFIG_SENSORS_MAX8688=m
|
||||
CONFIG_SENSORS_MAX1668=m
|
||||
CONFIG_SENSORS_MAX197=m
|
||||
|
||||
# Industrial I/O subsystem configuration
|
||||
CONFIG_IIO=m
|
||||
CONFIG_IIO_BUFFER=y
|
||||
CONFIG_IIO_BUFFER_CB=y
|
||||
# CONFIG_IIO_KFIFO_BUF is not set
|
||||
CONFIG_IIO_TRIGGERED_BUFFER=m
|
||||
CONFIG_IIO_TRIGGER=y
|
||||
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
|
||||
CONFIG_IIO_INTERRUPT_TRIGGER=m
|
||||
CONFIG_HID_SENSOR_IIO_COMMON=m
|
||||
CONFIG_HID_SENSOR_IIO_TRIGGER=m
|
||||
CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS=y
|
||||
# CONFIG_IIO_SYSFS_TRIGGER is not set
|
||||
# CONFIG_AD5446 is not set
|
||||
# CONFIG_AD5380 is not set
|
||||
# CONFIG_AD5064 is not set
|
||||
# CONFIG_BMA180 is not set
|
||||
# CONFIG_MAX1363 is not set
|
||||
# CONFIG_MAX517 is not set
|
||||
# CONFIG_MCP4725 is not set
|
||||
# CONFIG_ITG3200 is not set
|
||||
# CONFIG_APDS9300 is not set
|
||||
# CONFIG_TSL2583 is not set
|
||||
# CONFIG_TSL2x7x is not set
|
||||
# CONFIG_NAU7802 is not set
|
||||
# CONFIG_TI_ADC081C is not set
|
||||
# CONFIG_EXYNOS_ADC is not set
|
||||
# CONFIG_VIPERBOARD_ADC is not set
|
||||
# CONFIG_INV_MPU6050_IIO is not set
|
||||
CONFIG_IIO_ST_GYRO_3AXIS=m
|
||||
CONFIG_IIO_ST_MAGN_3AXIS=m
|
||||
CONFIG_IIO_ST_ACCEL_3AXIS=m
|
||||
# CONFIG_ADJD_S311 is not set
|
||||
# CONFIG_SENSORS_TSL2563 is not set
|
||||
# CONFIG_VCNL4000 is not set
|
||||
# CONFIG_AK8975 is not set
|
||||
# CONFIG_TMP006 is not set
|
||||
# CONFIG_IIO_ST_PRESS is not set
|
||||
# CONFIG_KXSD9 is not set
|
||||
# CONFIG_AD7266 is not set
|
||||
# CONFIG_AD7298 is not set
|
||||
# CONFIG_AD7476 is not set
|
||||
# CONFIG_AD7791 is not set
|
||||
# CONFIG_AD7793 is not set
|
||||
# CONFIG_AD7887 is not set
|
||||
# CONFIG_AD7923 is not set
|
||||
# CONFIG_MCP320X is not set
|
||||
# CONFIG_AD8366 is not set
|
||||
# CONFIG_AD5360 is not set
|
||||
# CONFIG_AD5421 is not set
|
||||
# CONFIG_AD5449 is not set
|
||||
# CONFIG_AD5504 is not set
|
||||
# CONFIG_AD5624R_SPI is not set
|
||||
# CONFIG_AD5686 is not set
|
||||
# CONFIG_AD5755 is not set
|
||||
# CONFIG_AD5764 is not set
|
||||
# CONFIG_AD5791 is not set
|
||||
# CONFIG_AD7303 is not set
|
||||
# CONFIG_AD9523 is not set
|
||||
# CONFIG_ADF4350 is not set
|
||||
# CONFIG_ADIS16080 is not set
|
||||
# CONFIG_ADIS16130 is not set
|
||||
# CONFIG_ADIS16136 is not set
|
||||
# CONFIG_ADIS16260 is not set
|
||||
# CONFIG_ADXRS450 is not set
|
||||
# CONFIG_ADIS16400 is not set
|
||||
# CONFIG_ADIS16480 is not set
|
||||
|
||||
# staging IIO drivers
|
||||
# CONFIG_AD7291 is not set
|
||||
# CONFIG_AD7606 is not set
|
||||
# CONFIG_AD799X is not set
|
||||
# CONFIG_ADT7316 is not set
|
||||
# CONFIG_AD7150 is not set
|
||||
# CONFIG_AD7152 is not set
|
||||
# CONFIG_AD7746 is not set
|
||||
# CONFIG_AD5933 is not set
|
||||
# CONFIG_ADE7854 is not set
|
||||
# CONFIG_SENSORS_ISL29018 is not set
|
||||
# CONFIG_SENSORS_ISL29028 is not set
|
||||
# CONFIG_SENSORS_HMC5843 is not set
|
||||
# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
|
||||
# CONFIG_IIO_SIMPLE_DUMMY is not set
|
||||
# CONFIG_ADIS16201 is not set
|
||||
# CONFIG_ADIS16203 is not set
|
||||
# CONFIG_ADIS16204 is not set
|
||||
# CONFIG_ADIS16209 is not set
|
||||
# CONFIG_ADIS16220 is not set
|
||||
# CONFIG_ADIS16240 is not set
|
||||
# CONFIG_LIS3L02DQ is not set
|
||||
# CONFIG_SCA3000 is not set
|
||||
# CONFIG_AD7780 is not set
|
||||
# CONFIG_AD7816 is not set
|
||||
# CONFIG_AD7192 is not set
|
||||
# CONFIG_AD7280 is not set
|
||||
# CONFIG_AD5930 is not set
|
||||
# CONFIG_AD9832 is not set
|
||||
# CONFIG_AD9834 is not set
|
||||
# CONFIG_AD9850 is not set
|
||||
# CONFIG_AD9852 is not set
|
||||
# CONFIG_AD9910 is not set
|
||||
# CONFIG_AD9951 is not set
|
||||
# CONFIG_ADIS16060 is not set
|
||||
# CONFIG_ADE7753 is not set
|
||||
# CONFIG_ADE7754 is not set
|
||||
# CONFIG_ADE7758 is not set
|
||||
# CONFIG_ADE7759 is not set
|
||||
# CONFIG_AD2S90 is not set
|
||||
# CONFIG_AD2S1200 is not set
|
||||
# CONFIG_AD2S1210 is not set
|
||||
|
||||
|
||||
|
||||
# CONFIG_HMC6352 is not set
|
||||
# CONFIG_BMP085 is not set
|
||||
# CONFIG_BMP085_I2C is not set
|
||||
# CONFIG_PCH_PHUB is not set
|
||||
# CONFIG_SERIAL_PCH_UART is not set
|
||||
# CONFIG_USB_SWITCH_FSA9480 is not set
|
||||
# CONFIG_SRAM is not set
|
||||
CONFIG_SERIAL_ARC=m
|
||||
CONFIG_SERIAL_ARC_NR_PORTS=1
|
||||
# CONFIG_SERIAL_RP2 is not set
|
||||
# CONFIG_SERIAL_FSL_LPUART is not set
|
||||
|
||||
CONFIG_W1=m
|
||||
CONFIG_W1_CON=y
|
||||
@ -2604,6 +2733,7 @@ CONFIG_RTC_DRV_PCF50633=m
|
||||
CONFIG_RTC_DRV_DS3232=m
|
||||
CONFIG_RTC_DRV_ISL12022=m
|
||||
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
|
||||
# CONFIG_RTC_DRV_MOXART is not set
|
||||
|
||||
CONFIG_R3964=m
|
||||
# CONFIG_APPLICOM is not set
|
||||
@ -2645,6 +2775,7 @@ CONFIG_DRM_MGAG200=m # do not enable on f17 or older
|
||||
# CONFIG_DRM_SAVAGE is not set
|
||||
CONFIG_DRM_I915=m
|
||||
CONFIG_DRM_I915_KMS=y
|
||||
# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
|
||||
CONFIG_DRM_VIA=m
|
||||
CONFIG_DRM_NOUVEAU=m
|
||||
CONFIG_NOUVEAU_DEBUG=5
|
||||
@ -2722,6 +2853,7 @@ CONFIG_VIDEO_CX88=m
|
||||
CONFIG_VIDEO_CX88_DVB=m
|
||||
CONFIG_VIDEO_CX88_ALSA=m
|
||||
CONFIG_VIDEO_CX88_BLACKBIRD=m
|
||||
CONFIG_VIDEO_CX88_ENABLE_VP3054=y
|
||||
CONFIG_VIDEO_CX88_VP3054=m
|
||||
CONFIG_VIDEO_EM28XX=m
|
||||
CONFIG_VIDEO_EM28XX_ALSA=m
|
||||
@ -2746,6 +2878,7 @@ CONFIG_VIDEO_SAA7134_ALSA=m
|
||||
CONFIG_VIDEO_SAA7134_DVB=m
|
||||
CONFIG_VIDEO_SAA7134_RC=y
|
||||
CONFIG_VIDEO_USBVISION=m
|
||||
CONFIG_VIDEO_STK1160_COMMON=m
|
||||
CONFIG_VIDEO_STK1160=m
|
||||
CONFIG_VIDEO_STK1160_AC97=y
|
||||
CONFIG_VIDEO_W9966=m
|
||||
@ -2926,6 +3059,7 @@ CONFIG_IR_GPIO_CIR=m
|
||||
CONFIG_V4L_MEM2MEM_DRIVERS=y
|
||||
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
|
||||
# CONFIG_VIDEO_SH_VEU is not set
|
||||
# CONFIG_VIDEO_RENESAS_VSP1 is not set
|
||||
# CONFIG_V4L_TEST_DRIVERS is not set
|
||||
|
||||
# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set
|
||||
@ -3231,9 +3365,15 @@ CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
||||
CONFIG_USB_EHCI_TT_NEWSCHED=y
|
||||
# CONFIG_USB_EHCI_MV is not set
|
||||
# CONFIG_USB_EHCI_HCD_PLATFORM is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
# CONFIG_USB_ISP1760_HCD is not set
|
||||
CONFIG_USB_ISP1362_HCD=m
|
||||
CONFIG_USB_FUSBH200_HCD=m
|
||||
# CONFIG_USB_FOTG210_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PCI=y
|
||||
# CONFIG_USB_OHCI_HCD_SSB is not set
|
||||
# CONFIG_USB_HCD_TEST_MODE is not set
|
||||
# CONFIG_USB_OHCI_HCD_PLATFORM is not set
|
||||
CONFIG_USB_UHCI_HCD=y
|
||||
CONFIG_USB_SL811_HCD=m
|
||||
@ -3242,8 +3382,6 @@ CONFIG_USB_SL811_HCD_ISO=y
|
||||
# CONFIG_USB_R8A66597_HCD is not set
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
|
||||
CONFIG_USB_ISP1362_HCD=m
|
||||
CONFIG_USB_FUSBH200_HCD=m
|
||||
|
||||
#
|
||||
# USB Device Class drivers
|
||||
@ -3333,9 +3471,14 @@ CONFIG_HID_SMARTJOYPLUS=m
|
||||
CONFIG_HID_TOPSEED=m
|
||||
CONFIG_HID_THINGM=m
|
||||
CONFIG_HID_THRUSTMASTER=m
|
||||
CONFIG_HID_XINMO=m
|
||||
CONFIG_HID_ZEROPLUS=m
|
||||
CONFIG_HID_ZYDACRON=m
|
||||
CONFIG_HID_SENSOR_HUB=m
|
||||
CONFIG_HID_SENSOR_GYRO_3D=m
|
||||
CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
|
||||
CONFIG_HID_SENSOR_ALS=m
|
||||
CONFIG_HID_SENSOR_ACCEL_3D=m
|
||||
CONFIG_HID_EMS_FF=m
|
||||
CONFIG_HID_ELECOM=m
|
||||
CONFIG_HID_ELO=m
|
||||
@ -3403,6 +3546,7 @@ CONFIG_USB_GSPCA_SPCA506=m
|
||||
CONFIG_USB_GSPCA_SPCA508=m
|
||||
CONFIG_USB_GSPCA_SPCA561=m
|
||||
CONFIG_USB_GSPCA_STK014=m
|
||||
CONFIG_USB_GSPCA_STK1135=m
|
||||
CONFIG_USB_GSPCA_SUNPLUS=m
|
||||
CONFIG_USB_GSPCA_T613=m
|
||||
CONFIG_USB_GSPCA_TOPRO=m
|
||||
@ -3446,6 +3590,7 @@ CONFIG_USB_SPEEDTOUCH=m
|
||||
CONFIG_USB_NET_AX8817X=m
|
||||
CONFIG_USB_NET_AX88179_178A=m
|
||||
CONFIG_USB_NET_DM9601=m
|
||||
CONFIG_USB_NET_SR9700=m
|
||||
CONFIG_USB_NET_SMSC95XX=m
|
||||
CONFIG_USB_NET_GL620A=m
|
||||
CONFIG_USB_NET_NET1080=m
|
||||
@ -3490,6 +3635,7 @@ CONFIG_USB_USS720=m
|
||||
#
|
||||
CONFIG_USB_SERIAL=y
|
||||
CONFIG_USB_SERIAL_GENERIC=y
|
||||
CONFIG_USB_SERIAL_SIMPLE=m
|
||||
CONFIG_USB_SERIAL_AIRCABLE=m
|
||||
CONFIG_USB_SERIAL_ARK3116=m
|
||||
CONFIG_USB_SERIAL_BELKIN=m
|
||||
@ -3584,6 +3730,7 @@ CONFIG_USB_PHY=y
|
||||
# CONFIG_OMAP_USB2 is not set
|
||||
# CONFIG_OMAP_USB3 is not set
|
||||
# CONFIG_OMAP_CONTROL_USB is not set
|
||||
# CONFIG_AM335X_PHY_USB is not set
|
||||
# CONFIG_SAMSUNG_USBPHY is not set
|
||||
# CONFIG_SAMSUNG_USB2PHY is not set
|
||||
# CONFIG_SAMSUNG_USB3PHY is not set
|
||||
@ -3600,8 +3747,6 @@ CONFIG_USB_FILE_STORAGE=m
|
||||
# CONFIG_USB_GADGET is not set
|
||||
# CONFIG_USB_DWC3 is not set
|
||||
# CONFIG_USB_GADGETFS is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
# CONFIG_USB_ISP1760_HCD is not set
|
||||
# CONFIG_USB_OXU210HP_HCD is not set
|
||||
CONFIG_USB_IOWARRIOR=m
|
||||
CONFIG_USB_ISIGHTFW=m
|
||||
@ -3628,6 +3773,7 @@ CONFIG_RADIO_SI4713=m
|
||||
CONFIG_USB_MR800=m
|
||||
CONFIG_USB_STKWEBCAM=m
|
||||
# CONFIG_USB_TEST is not set
|
||||
# CONFIG_USB_EHSET_TEST_FIXTURE is not set
|
||||
CONFIG_USB_TRANCEVIBRATOR=m
|
||||
CONFIG_USB_U132_HCD=m
|
||||
CONFIG_USB_UEAGLEATM=m
|
||||
@ -3706,6 +3852,7 @@ CONFIG_MFD_VIPERBOARD=m
|
||||
# CONFIG_MFD_SI476X_CORE is not set
|
||||
# CONFIG_MFD_TPS65912 is not set
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
# CONFIG_MFD_DA9063 is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
@ -3755,6 +3902,7 @@ CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_NILFS2_FS=m
|
||||
# CONFIG_LOGFS is not set
|
||||
CONFIG_CEPH_FS=m
|
||||
CONFIG_CEPH_FSCACHE=y
|
||||
CONFIG_BLK_DEV_RBD=m
|
||||
CONFIG_CEPH_LIB=m
|
||||
# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
|
||||
@ -3809,6 +3957,7 @@ CONFIG_ECRYPT_FS=m
|
||||
# CONFIG_ECRYPT_FS_MESSAGING is not set
|
||||
CONFIG_HFS_FS=m
|
||||
CONFIG_HFSPLUS_FS=m
|
||||
# CONFIG_HFSPLUS_FS_POSIX_ACL is not set
|
||||
CONFIG_BEFS_FS=m
|
||||
# CONFIG_BEFS_DEBUG is not set
|
||||
# CONFIG_BFS_FS is not set
|
||||
@ -3910,6 +4059,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||
# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
|
||||
# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
|
||||
# CONFIG_BTRFS_DEBUG is not set
|
||||
# CONFIG_BTRFS_ASSERT is not set
|
||||
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
|
||||
@ -3947,6 +4097,7 @@ CONFIG_SUN_PARTITION=y
|
||||
# CONFIG_SYSV68_PARTITION is not set
|
||||
CONFIG_UNIXWARE_DISKLABEL=y
|
||||
# CONFIG_ULTRIX_PARTITION is not set
|
||||
# CONFIG_CMDLINE_PARTITION is not set
|
||||
|
||||
CONFIG_NLS=y
|
||||
|
||||
@ -4035,6 +4186,9 @@ CONFIG_HEADERS_CHECK=y
|
||||
# This generates a huge amount of dmesg spew
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
#
|
||||
# This breaks booting until the module patches are in-tree
|
||||
# CONFIG_DEBUG_KOBJECT_RELEASE is not set
|
||||
#
|
||||
#
|
||||
# These debug options are deliberatly left on (even in 'make release' kernels).
|
||||
# They aren't that much of a performance impact, and the value
|
||||
@ -4236,6 +4390,9 @@ CONFIG_FB_ATY_BACKLIGHT=y
|
||||
# CONFIG_BACKLIGHT_SAHARA is not set
|
||||
CONFIG_BACKLIGHT_WM831X=m
|
||||
CONFIG_BACKLIGHT_LP855X=m
|
||||
# CONFIG_BACKLIGHT_GPIO is not set
|
||||
# CONFIG_BACKLIGHT_LV5207LP is not set
|
||||
# CONFIG_BACKLIGHT_BD6107 is not set
|
||||
|
||||
CONFIG_LCD_CLASS_DEVICE=m
|
||||
CONFIG_LCD_PLATFORM=m
|
||||
@ -4385,7 +4542,8 @@ CONFIG_LEDS_DELL_NETBOOKS=m
|
||||
# CONFIG_LEDS_LM355x is not set
|
||||
# CONFIG_LEDS_OT200 is not set
|
||||
# CONFIG_LEDS_PWM is not set
|
||||
# CONFIG_LEDS_RENESAS_TPU is not set
|
||||
# CONFIG_LEDS_LP8501 is not set
|
||||
# CONFIG_LEDS_PCA963X is not set
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_TIMER=m
|
||||
CONFIG_LEDS_TRIGGER_ONESHOT=m
|
||||
@ -4475,6 +4633,7 @@ CONFIG_POWER_SUPPLY=y
|
||||
|
||||
# CONFIG_TEST_POWER is not set
|
||||
CONFIG_APM_POWER=m
|
||||
# CONFIG_GENERIC_ADC_BATTERY is not set
|
||||
# CONFIG_WM831X_POWER is not set
|
||||
|
||||
# CONFIG_BATTERY_DS2760 is not set
|
||||
@ -4494,6 +4653,7 @@ CONFIG_APM_POWER=m
|
||||
# CONFIG_CHARGER_GPIO is not set
|
||||
# CONFIG_CHARGER_PCF50633 is not set
|
||||
# CONFIG_CHARGER_BQ2415X is not set
|
||||
# CONFIG_CHARGER_BQ24190 is not set
|
||||
CONFIG_POWER_RESET=y
|
||||
|
||||
# CONFIG_PDA_POWER is not set
|
||||
@ -4509,6 +4669,7 @@ CONFIG_UIO_AEC=m
|
||||
CONFIG_UIO_SERCOS3=m
|
||||
CONFIG_UIO_PCI_GENERIC=m
|
||||
# CONFIG_UIO_NETX is not set
|
||||
# CONFIG_UIO_MF624 is not set
|
||||
|
||||
CONFIG_VFIO=m
|
||||
CONFIG_VFIO_IOMMU_TYPE1=m
|
||||
@ -4548,6 +4709,7 @@ CONFIG_MEMSTICK=m
|
||||
# CONFIG_MEMSTICK_DEBUG is not set
|
||||
# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
|
||||
CONFIG_MSPRO_BLOCK=m
|
||||
# CONFIG_MS_BLOCK is not set
|
||||
CONFIG_MEMSTICK_TIFM_MS=m
|
||||
CONFIG_MEMSTICK_JMICRON_38X=m
|
||||
CONFIG_MEMSTICK_R592=m
|
||||
@ -4616,6 +4778,7 @@ CONFIG_STAGING_MEDIA=y
|
||||
# CONFIG_TI_ST is not set
|
||||
# CONFIG_FB_XGI is not set
|
||||
# CONFIG_VIDEO_GO7007 is not set
|
||||
# CONFIG_USB_MSI3101 is not set
|
||||
# CONFIG_DT3155 is not set
|
||||
# CONFIG_W35UND is not set
|
||||
# CONFIG_PRISM2_USB is not set
|
||||
@ -4628,7 +4791,6 @@ CONFIG_USB_ATMEL=m
|
||||
# CONFIG_POHMELFS is not set
|
||||
# CONFIG_IDE_PHISON is not set
|
||||
# CONFIG_LINE6_USB is not set
|
||||
# CONFIG_IIO is not set
|
||||
# CONFIG_VME_BUS is not set
|
||||
# CONFIG_RAR_REGISTER is not set
|
||||
# CONFIG_VT6656 is not set
|
||||
@ -4642,6 +4804,7 @@ CONFIG_RTL8192E=m
|
||||
# CONFIG_INPUT_GPIO is not set
|
||||
# CONFIG_VIDEO_CX25821 is not set
|
||||
# CONFIG_R8187SE is not set
|
||||
# CONFIG_R8188EU is not set
|
||||
# CONFIG_RTL8192U is not set
|
||||
# CONFIG_FB_SM7XX is not set
|
||||
# CONFIG_SPECTRA is not set
|
||||
@ -4649,6 +4812,7 @@ CONFIG_RTL8192E=m
|
||||
# CONFIG_EASYCAP is not set
|
||||
# CONFIG_SOLO6X10 is not set
|
||||
# CONFIG_ACPI_QUICKSTART is not set
|
||||
# CONFIG_LTE_GDM724X is not set
|
||||
CONFIG_R8712U=m # Larry Finger maintains this (rhbz 699618)
|
||||
# CONFIG_R8712_AP is not set
|
||||
# CONFIG_ATH6K_LEGACY is not set
|
||||
@ -4682,6 +4846,10 @@ CONFIG_ALTERA_STAPL=m
|
||||
# CONFIG_CED1401 is not set
|
||||
# CONFIG_DGRP is not set
|
||||
# CONFIG_SB105X is not set
|
||||
# CONFIG_LUSTRE_FS is not set
|
||||
# CONFIG_XILLYBUS is not set
|
||||
# CONFIG_DGAP is not set
|
||||
# CONFIG_DGNC is not set
|
||||
# END OF STAGING
|
||||
|
||||
#
|
||||
@ -4737,6 +4905,7 @@ CONFIG_MAC802154=m
|
||||
CONFIG_NET_MPLS_GSO=m
|
||||
|
||||
# CONFIG_EXTCON is not set
|
||||
# CONFIG_EXTCON_ADC_JACK is not set
|
||||
# CONFIG_MEMORY is not set
|
||||
|
||||
CONFIG_PPS=m
|
||||
@ -4766,6 +4935,7 @@ CONFIG_ZSWAP=y
|
||||
# CONFIG_W1_MASTER_GPIO is not set
|
||||
# CONFIG_LEDS_GPIO is not set
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
||||
# CONFIG_GPIO_MAX732X is not set
|
||||
# CONFIG_GPIO_PCA953X is not set
|
||||
# CONFIG_GPIO_PCF857X is not set
|
||||
@ -4834,6 +5004,7 @@ CONFIG_BCMA=m
|
||||
CONFIG_BCMA_BLOCKIO=y
|
||||
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
|
||||
CONFIG_BCMA_HOST_PCI=y
|
||||
# CONFIG_BCMA_HOST_SOC is not set
|
||||
CONFIG_BCMA_DRIVER_GMAC_CMN=y
|
||||
CONFIG_BCMA_DRIVER_GPIO=y
|
||||
# CONFIG_BCMA_DEBUG is not set
|
||||
@ -4862,5 +5033,3 @@ CONFIG_FMC_CHARDEV=m
|
||||
# CONFIG_CRYPTO_KEY_TYPE is not set
|
||||
# CONFIG_PGP_LIBRARY is not set
|
||||
# CONFIG_PGP_PRELOAD is not set
|
||||
|
||||
# CONFIG_AM335X_PHY_USB is not set
|
||||
|
27
config-no-extra
Normal file
27
config-no-extra
Normal file
@ -0,0 +1,27 @@
|
||||
### config-no-extra: only (to a first approximation) modules listed in
|
||||
### mod-extra.list should be listed here.
|
||||
|
||||
# CONFIG_ISDN is not set
|
||||
# CONFIG_RDS is not set
|
||||
# CONFIG_IP_DCCP is not set
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
|
||||
# CONFIG_DEV_APPLETALK is not set
|
||||
|
||||
# CONFIG_FUSION is not set
|
||||
# CONFIG_I2O is not set
|
||||
|
||||
# CONFIG_NET_TULIP is not set
|
||||
|
||||
# CONFIG_HERMES is not set
|
||||
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_CUSE is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_BEFS_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
@ -334,7 +334,6 @@ CONFIG_I2C_MPC=m
|
||||
# CONFIG_CRYPTO_DEV_FSL_CAAM is not set
|
||||
# CONFIG_CRYPTO_SHA1_PPC is not set
|
||||
|
||||
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
|
||||
# CONFIG_CAN_FLEXCAN is not set
|
||||
@ -380,3 +379,5 @@ CONFIG_BACKLIGHT_PWM=m
|
||||
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=n
|
||||
|
||||
CONFIG_XZ_DEC_POWERPC=y
|
||||
|
||||
CONFIG_CRASH=m
|
||||
|
@ -136,6 +136,8 @@ CONFIG_RELOCATABLE=y
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
|
||||
CONFIG_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_KVM_BOOK3S_64=m
|
||||
CONFIG_KVM_BOOK3S_64_HV=y
|
||||
# CONFIG_KVM_EXIT_TIMING is not set
|
||||
@ -176,5 +178,3 @@ CONFIG_BPF_JIT=y
|
||||
# CONFIG_PPC_TRANSACTIONAL_MEM is not set
|
||||
# CONFIG_SND_HDA_INTEL is not set
|
||||
CONFIG_BLK_DEV_RSXX=m
|
||||
|
||||
CONFIG_CRASH=m
|
||||
|
@ -127,6 +127,8 @@ CONFIG_RELOCATABLE=y
|
||||
|
||||
CONFIG_RCU_FANOUT=64
|
||||
|
||||
CONFIG_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_KVM_BOOK3S_64=m
|
||||
CONFIG_KVM_BOOK3S_64_HV=y
|
||||
# CONFIG_KVM_EXIT_TIMING is not set
|
||||
|
@ -235,8 +235,6 @@ CONFIG_SCM_BLOCK_CLUSTER_WRITE=y
|
||||
# CONFIG_S390_PTDUMP is not set
|
||||
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
|
||||
# CONFIG_PCI is not set
|
||||
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
# CONFIG_HID is not set
|
||||
@ -249,6 +247,7 @@ CONFIG_SCM_BLOCK_CLUSTER_WRITE=y
|
||||
# CONFIG_INPUT_TABLET is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
# CONFIG_SERIO is not set
|
||||
|
||||
# CONFIG_ACCESSIBILITY is not set
|
||||
# CONFIG_AUXDISPLAY is not set
|
||||
@ -267,6 +266,8 @@ CONFIG_SCM_BLOCK_CLUSTER_WRITE=y
|
||||
# CONFIG_I2C_PARPORT is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_PTP_1588_CLOCK is not set
|
||||
# CONFIG_PPS is not set
|
||||
|
||||
# CONFIG_PHYLIB is not set
|
||||
# CONFIG_ATM_DRIVERS is not set
|
||||
|
@ -40,6 +40,8 @@ CONFIG_EFI_VARS_PSTORE=y
|
||||
CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
|
||||
CONFIG_EFI_PCDP=y
|
||||
CONFIG_FB_EFI=y
|
||||
# needs FB_SIMPLE to work correctly
|
||||
# CONFIG_X86_SYSFB is not set
|
||||
|
||||
# FIXME: 32bit only?
|
||||
# CONFIG_FB_N411 is not set
|
||||
@ -254,6 +256,7 @@ CONFIG_PARAVIRT_TIME_ACCOUNTING=y
|
||||
CONFIG_KVM_CLOCK=y
|
||||
CONFIG_KVM_GUEST=y
|
||||
CONFIG_KVM_MMU_AUDIT=y # default $x would be nice...
|
||||
# CONFIG_KVM_DEBUG_FS is not set
|
||||
|
||||
CONFIG_XEN=y
|
||||
# CONFIG_XEN_DEBUG is not set
|
||||
@ -362,6 +365,9 @@ CONFIG_LPC_ICH=m
|
||||
|
||||
CONFIG_GPIO_ICH=m
|
||||
# CONFIG_GPIO_LYNXPOINT is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
# CONFIG_GPIO_F7188X is not set
|
||||
|
||||
|
||||
CONFIG_PCI_CNB20LE_QUIRK=y
|
||||
|
||||
@ -398,9 +404,6 @@ CONFIG_HP_ACCEL=m
|
||||
|
||||
# CONFIG_RAPIDIO is not set
|
||||
|
||||
# CONFIG_GPIO_GENERIC_PLATFORM is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
@ -459,3 +462,5 @@ CONFIG_MODULE_SIG_UEFI=y
|
||||
|
||||
CONFIG_VMXNET3=m
|
||||
CONFIG_VFIO_PCI_VGA=y
|
||||
|
||||
# CONFIG_NTB is not set
|
||||
|
@ -16,8 +16,10 @@ CONFIG_X86_64_ACPI_NUMA=y
|
||||
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
|
||||
CONFIG_NUMA_BALANCING=y
|
||||
|
||||
CONFIG_NR_CPUS=128
|
||||
# https://lists.fedoraproject.org/pipermail/kernel/2013-November/004601.html
|
||||
CONFIG_NR_CPUS=1024
|
||||
CONFIG_PHYSICAL_START=0x1000000
|
||||
CONFIG_PHYSICAL_ALIGN=0x1000000
|
||||
|
||||
CONFIG_IA32_EMULATION=y
|
||||
# CONFIG_IA32_AOUT is not set
|
||||
|
@ -1,34 +0,0 @@
|
||||
From 3cd4fefa1d614debf75f059def34ac1aaaf96501 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Boyer <jwboyer@redhat.com>
|
||||
Date: Tue, 30 Apr 2013 14:01:57 -0400
|
||||
Subject: [PATCH] When we encounter a bad PTE, print out what modules were
|
||||
loaded, so we can see if there is a common driver potentially at fault.
|
||||
|
||||
Signed-off-by: Dave Jones <davej@redhat.com>
|
||||
---
|
||||
mm/memory.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/mm/memory.c b/mm/memory.c
|
||||
index 6dc1882..99564df 100644
|
||||
--- a/mm/memory.c
|
||||
+++ b/mm/memory.c
|
||||
@@ -57,6 +57,7 @@
|
||||
#include <linux/swapops.h>
|
||||
#include <linux/elf.h>
|
||||
#include <linux/gfp.h>
|
||||
+#include <linux/module.h>
|
||||
#include <linux/migrate.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
@@ -720,6 +721,7 @@ static void print_bad_pte(struct vm_area_struct *vma, unsigned long addr,
|
||||
if (vma->vm_file && vma->vm_file->f_op)
|
||||
printk(KERN_ALERT "vma->vm_file->f_op->mmap: %pSR\n",
|
||||
vma->vm_file->f_op->mmap);
|
||||
+ print_modules();
|
||||
dump_stack();
|
||||
add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE);
|
||||
}
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -1,20 +0,0 @@
|
||||
Bugzilla: 1027037 1028785
|
||||
Upstream-status: http://lists.freedesktop.org/archives/intel-gfx/2013-November/035948.html
|
||||
|
||||
This is _by far_ the most common backtrace for i915 on retrace.fp.o, and
|
||||
it's mostly useless noise. There's not enough context when it's generated
|
||||
to know if something actually went wrong. Downgrade the message to
|
||||
KMS debugging so we can still get it if we want it.
|
||||
|
||||
diff -up linux-3.13.0-0.rc0.git2.1.fc21.x86_64/drivers/gpu/drm/i915/intel_display.c.jx linux-3.13.0-0.rc0.git2.1.fc21.x86_64/drivers/gpu/drm/i915/intel_display.c
|
||||
--- linux-3.13.0-0.rc0.git2.1.fc21.x86_64/drivers/gpu/drm/i915/intel_display.c.jx 2013-11-03 18:41:51.000000000 -0500
|
||||
+++ linux-3.13.0-0.rc0.git2.1.fc21.x86_64/drivers/gpu/drm/i915/intel_display.c 2013-11-13 10:12:05.781301624 -0500
|
||||
@@ -8803,7 +8803,7 @@ check_crtc_state(struct drm_device *dev)
|
||||
|
||||
if (active &&
|
||||
!intel_pipe_config_compare(dev, &crtc->config, &pipe_config)) {
|
||||
- WARN(1, "pipe state doesn't match!\n");
|
||||
+ DRM_DEBUG_KMS("pipe state doesn't match!\n");
|
||||
intel_dump_pipe_config(crtc, &pipe_config,
|
||||
"[hw state]");
|
||||
intel_dump_pipe_config(crtc, &crtc->config,
|
@ -1 +0,0 @@
|
||||
empty
|
@ -150,19 +150,6 @@ index 7e96f4f..18c599d 100644
|
||||
};
|
||||
|
||||
/* forward declaration for QXL_INFO_IO */
|
||||
diff --git a/drivers/gpu/drm/qxl/qxl_fb.c b/drivers/gpu/drm/qxl/qxl_fb.c
|
||||
index 88722f2..f437b30 100644
|
||||
--- a/drivers/gpu/drm/qxl/qxl_fb.c
|
||||
+++ b/drivers/gpu/drm/qxl/qxl_fb.c
|
||||
@@ -108,7 +108,7 @@ static void qxl_fb_dirty_flush(struct fb_info *info)
|
||||
u32 x1, x2, y1, y2;
|
||||
|
||||
/* TODO: hard coding 32 bpp */
|
||||
- int stride = qfbdev->qfb.base.pitches[0] * 4;
|
||||
+ int stride = qfbdev->qfb.base.pitches[0];
|
||||
|
||||
x1 = qfbdev->dirty.x1;
|
||||
x2 = qfbdev->dirty.x2;
|
||||
diff --git a/drivers/gpu/drm/qxl/qxl_kms.c b/drivers/gpu/drm/qxl/qxl_kms.c
|
||||
index 9e8da9e..e0ddd5b 100644
|
||||
--- a/drivers/gpu/drm/qxl/qxl_kms.c
|
||||
|
@ -1,30 +0,0 @@
|
||||
Bugzilla: N/A
|
||||
Upstream-status: 3.13
|
||||
|
||||
From 1b28c3e628315ac0d9ef2d3fac0403f05ae692db Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Thu, 28 Nov 2013 05:39:03 +0000
|
||||
Subject: drm/qxl: fix memory leak in release list handling
|
||||
|
||||
wow no idea how I got this far without seeing this,
|
||||
leaking the entries in the list makes kmalloc-64 slab grow.
|
||||
|
||||
References: https://bugzilla.kernel.org/show_bug.cgi?id=65121
|
||||
Cc: stable@vger.kernel.org
|
||||
Reported-by: Matthew Stapleton <matthew4196@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c
|
||||
index 0109a96..821ab7b 100644
|
||||
--- a/drivers/gpu/drm/qxl/qxl_release.c
|
||||
+++ b/drivers/gpu/drm/qxl/qxl_release.c
|
||||
@@ -92,6 +92,7 @@ qxl_release_free(struct qxl_device *qdev,
|
||||
- DRM_FILE_OFFSET);
|
||||
qxl_fence_remove_release(&bo->fence, release->id);
|
||||
qxl_bo_unref(&bo);
|
||||
+ kfree(entry);
|
||||
}
|
||||
spin_lock(&qdev->release_idr_lock);
|
||||
idr_remove(&qdev->release_idr, release->id);
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
@ -1,173 +0,0 @@
|
||||
Bugzilla: 1010679
|
||||
Upstream-status: 3.13
|
||||
|
||||
From 908171aa738b5bbcc6241cec46f73fcd57dd00d4 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre Ossman <pierre@ossman.eu>
|
||||
Date: Wed, 6 Nov 2013 20:00:32 +0100
|
||||
Subject: [PATCH 1/2] drm/radeon/audio: correct ACR table
|
||||
|
||||
The values were taken from the HDMI spec, but they assumed
|
||||
exact x/1.001 clocks. Since we round the clocks, we also need
|
||||
to calculate different N and CTS values.
|
||||
|
||||
Note that the N for 25.2/1.001 MHz at 44.1 kHz audio is out of
|
||||
spec. Hopefully this mode is rarely used and/or HDMI sinks
|
||||
tolerate overly large values of N.
|
||||
|
||||
bug:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=69675
|
||||
|
||||
Signed-off-by: Pierre Ossman <pierre@ossman.eu>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/r600_hdmi.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
index 4140fe8..e8ca095 100644
|
||||
--- a/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
+++ b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
@@ -57,15 +57,15 @@ enum r600_hdmi_iec_status_bits {
|
||||
static const struct radeon_hdmi_acr r600_hdmi_predefined_acr[] = {
|
||||
/* 32kHz 44.1kHz 48kHz */
|
||||
/* Clock N CTS N CTS N CTS */
|
||||
- { 25175, 4576, 28125, 7007, 31250, 6864, 28125 }, /* 25,20/1.001 MHz */
|
||||
+ { 25175, 4096, 25175, 28224, 125875, 6144, 25175 }, /* 25,20/1.001 MHz */
|
||||
{ 25200, 4096, 25200, 6272, 28000, 6144, 25200 }, /* 25.20 MHz */
|
||||
{ 27000, 4096, 27000, 6272, 30000, 6144, 27000 }, /* 27.00 MHz */
|
||||
{ 27027, 4096, 27027, 6272, 30030, 6144, 27027 }, /* 27.00*1.001 MHz */
|
||||
{ 54000, 4096, 54000, 6272, 60000, 6144, 54000 }, /* 54.00 MHz */
|
||||
{ 54054, 4096, 54054, 6272, 60060, 6144, 54054 }, /* 54.00*1.001 MHz */
|
||||
- { 74176, 11648, 210937, 17836, 234375, 11648, 140625 }, /* 74.25/1.001 MHz */
|
||||
+ { 74176, 4096, 74176, 5733, 75335, 6144, 74176 }, /* 74.25/1.001 MHz */
|
||||
{ 74250, 4096, 74250, 6272, 82500, 6144, 74250 }, /* 74.25 MHz */
|
||||
- { 148352, 11648, 421875, 8918, 234375, 5824, 140625 }, /* 148.50/1.001 MHz */
|
||||
+ { 148352, 4096, 148352, 5733, 150670, 6144, 148352 }, /* 148.50/1.001 MHz */
|
||||
{ 148500, 4096, 148500, 6272, 165000, 6144, 148500 }, /* 148.50 MHz */
|
||||
{ 0, 4096, 0, 6272, 0, 6144, 0 } /* Other */
|
||||
};
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From 05e4776357fe7217e531cbaaa163e24f688d10ce Mon Sep 17 00:00:00 2001
|
||||
From: Pierre Ossman <pierre@ossman.eu>
|
||||
Date: Wed, 6 Nov 2013 20:09:08 +0100
|
||||
Subject: [PATCH 2/2] drm/radeon/audio: improve ACR calculation
|
||||
|
||||
In order to have any realistic chance of calculating proper
|
||||
ACR values, we need to be able to calculate both N and CTS,
|
||||
not just CTS. We still aim for the ideal N as specified in
|
||||
the HDMI spec though.
|
||||
|
||||
bug:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=69675
|
||||
|
||||
Signed-off-by: Pierre Ossman <pierre@ossman.eu>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/r600_hdmi.c | 68 ++++++++++++++++++++++++++------------
|
||||
1 file changed, 46 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
index e8ca095..92c6df7 100644
|
||||
--- a/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
+++ b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
@@ -24,6 +24,7 @@
|
||||
* Authors: Christian König
|
||||
*/
|
||||
#include <linux/hdmi.h>
|
||||
+#include <linux/gcd.h>
|
||||
#include <drm/drmP.h>
|
||||
#include <drm/radeon_drm.h>
|
||||
#include "radeon.h"
|
||||
@@ -67,25 +68,47 @@ static const struct radeon_hdmi_acr r600_hdmi_predefined_acr[] = {
|
||||
{ 74250, 4096, 74250, 6272, 82500, 6144, 74250 }, /* 74.25 MHz */
|
||||
{ 148352, 4096, 148352, 5733, 150670, 6144, 148352 }, /* 148.50/1.001 MHz */
|
||||
{ 148500, 4096, 148500, 6272, 165000, 6144, 148500 }, /* 148.50 MHz */
|
||||
- { 0, 4096, 0, 6272, 0, 6144, 0 } /* Other */
|
||||
};
|
||||
|
||||
+
|
||||
/*
|
||||
- * calculate CTS value if it's not found in the table
|
||||
+ * calculate CTS and N values if they are not found in the table
|
||||
*/
|
||||
-static void r600_hdmi_calc_cts(uint32_t clock, int *CTS, int N, int freq)
|
||||
+static void r600_hdmi_calc_cts(uint32_t clock, int *CTS, int *N, int freq)
|
||||
{
|
||||
- u64 n;
|
||||
- u32 d;
|
||||
-
|
||||
- if (*CTS == 0) {
|
||||
- n = (u64)clock * (u64)N * 1000ULL;
|
||||
- d = 128 * freq;
|
||||
- do_div(n, d);
|
||||
- *CTS = n;
|
||||
- }
|
||||
- DRM_DEBUG("Using ACR timing N=%d CTS=%d for frequency %d\n",
|
||||
- N, *CTS, freq);
|
||||
+ int n, cts;
|
||||
+ unsigned long div, mul;
|
||||
+
|
||||
+ /* Safe, but overly large values */
|
||||
+ n = 128 * freq;
|
||||
+ cts = clock * 1000;
|
||||
+
|
||||
+ /* Smallest valid fraction */
|
||||
+ div = gcd(n, cts);
|
||||
+
|
||||
+ n /= div;
|
||||
+ cts /= div;
|
||||
+
|
||||
+ /*
|
||||
+ * The optimal N is 128*freq/1000. Calculate the closest larger
|
||||
+ * value that doesn't truncate any bits.
|
||||
+ */
|
||||
+ mul = ((128*freq/1000) + (n-1))/n;
|
||||
+
|
||||
+ n *= mul;
|
||||
+ cts *= mul;
|
||||
+
|
||||
+ /* Check that we are in spec (not always possible) */
|
||||
+ if (n < (128*freq/1500))
|
||||
+ printk(KERN_WARNING "Calculated ACR N value is too small. You may experience audio problems.\n");
|
||||
+ if (n > (128*freq/300))
|
||||
+ printk(KERN_WARNING "Calculated ACR N value is too large. You may experience audio problems.\n");
|
||||
+
|
||||
+ *N = n;
|
||||
+ *CTS = cts;
|
||||
+
|
||||
+ DRM_DEBUG("Calculated ACR timing N=%d CTS=%d for frequency %d\n",
|
||||
+ *N, *CTS, freq);
|
||||
}
|
||||
|
||||
struct radeon_hdmi_acr r600_hdmi_acr(uint32_t clock)
|
||||
@@ -93,15 +116,16 @@ struct radeon_hdmi_acr r600_hdmi_acr(uint32_t clock)
|
||||
struct radeon_hdmi_acr res;
|
||||
u8 i;
|
||||
|
||||
- for (i = 0; r600_hdmi_predefined_acr[i].clock != clock &&
|
||||
- r600_hdmi_predefined_acr[i].clock != 0; i++)
|
||||
- ;
|
||||
- res = r600_hdmi_predefined_acr[i];
|
||||
+ /* Precalculated values for common clocks */
|
||||
+ for (i = 0; i < ARRAY_SIZE(r600_hdmi_predefined_acr); i++) {
|
||||
+ if (r600_hdmi_predefined_acr[i].clock == clock)
|
||||
+ return r600_hdmi_predefined_acr[i];
|
||||
+ }
|
||||
|
||||
- /* In case some CTS are missing */
|
||||
- r600_hdmi_calc_cts(clock, &res.cts_32khz, res.n_32khz, 32000);
|
||||
- r600_hdmi_calc_cts(clock, &res.cts_44_1khz, res.n_44_1khz, 44100);
|
||||
- r600_hdmi_calc_cts(clock, &res.cts_48khz, res.n_48khz, 48000);
|
||||
+ /* And odd clocks get manually calculated */
|
||||
+ r600_hdmi_calc_cts(clock, &res.cts_32khz, &res.n_32khz, 32000);
|
||||
+ r600_hdmi_calc_cts(clock, &res.cts_44_1khz, &res.n_44_1khz, 44100);
|
||||
+ r600_hdmi_calc_cts(clock, &res.cts_48khz, &res.n_48khz, 48000);
|
||||
|
||||
return res;
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,162 +0,0 @@
|
||||
|
||||
Delivered-To: jwboyer@gmail.com
|
||||
Received: by 10.76.168.104 with SMTP id zv8csp55663oab;
|
||||
Fri, 30 Aug 2013 15:52:46 -0700 (PDT)
|
||||
X-Received: by 10.68.244.168 with SMTP id xh8mr12419215pbc.3.1377903166373;
|
||||
Fri, 30 Aug 2013 15:52:46 -0700 (PDT)
|
||||
Return-Path: <linux-kernel-owner@vger.kernel.org>
|
||||
Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67])
|
||||
by mx.google.com with ESMTP id qc9si280431pac.269.1969.12.31.16.00.00;
|
||||
Fri, 30 Aug 2013 15:52:46 -0700 (PDT)
|
||||
Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67;
|
||||
Authentication-Results: mx.google.com;
|
||||
spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mail=linux-kernel-owner@vger.kernel.org;
|
||||
dkim=neutral (bad format) header.i=@hds.com
|
||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1753535Ab3H3WrV (ORCPT <rfc822;georgezhim@gmail.com>
|
||||
+ 99 others); Fri, 30 Aug 2013 18:47:21 -0400
|
||||
Received: from usindpps04.hds.com ([207.126.252.17]:35636 "EHLO
|
||||
usindpps04.hds.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S1752650Ab3H3WrU (ORCPT
|
||||
<rfc822;linux-kernel@vger.kernel.org>);
|
||||
Fri, 30 Aug 2013 18:47:20 -0400
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=hds.com; h=subject : to : from : cc
|
||||
: date : message-id : mime-version : content-type :
|
||||
content-transfer-encoding; s=mail1;
|
||||
bh=VofHN8IMnygn2hbqnFjLmX0PPEPbvpzE377u1RxpGOY=;
|
||||
b=piW6J78W57qDXBPJJuodWw/tvf0T//JbxKX6sLPvpuaOG2nBLMHzDqUeTYwFEQqUvdmf
|
||||
ZTkiwsKi0WEku3MKcxJ7veR7wvTZcQ4fGMETFTf1c2J/1JOKpXLnft4ERuW89/FAxw25
|
||||
wQM1ulsuQ3Cncl0I/sIaqMlaMOtvuQ/C8rsHorp+75eFiL6yx1jU5wMbuti4D/NprIET
|
||||
3r57cPZ0YCh6sLjvOgjay6mKyktMToyjHPx6X1TWCSWcwes33Popc1hpadxUdFI/0npL
|
||||
mN3Tttbe7e2RcmkXAZbwg8xj+FwSu3nIRC4G9UpFCsMz518C/AWZj4puwWE6VHZWVvVZ Rg==
|
||||
Received: from usindmail01.hds.com (usindmail03 [207.126.252.22])
|
||||
by usindpps04.hds.com (8.14.5/8.14.5) with ESMTP id r7UMlBjr025492;
|
||||
Fri, 30 Aug 2013 18:47:11 -0400
|
||||
Received: from hds.com (usindnetf5d-vlan47float.corp.hds.com [10.74.73.11])
|
||||
by usindmail01.hds.com (8.14.1/8.14.1) with ESMTP id r7UMl8SG058466;
|
||||
Fri, 30 Aug 2013 18:47:10 -0400 (EDT)
|
||||
Subject: [PATCH v2 1/2] elevator: Fix a race in elevator switching and md
|
||||
device initialization
|
||||
To: linux-kernel@vger.kernel.org
|
||||
From: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
|
||||
Cc: axboe@kernel.dk, tj@kernel.org, seiji.aguchi@hds.com,
|
||||
vgoyal@redhat.com, majianpeng@gmail.com
|
||||
Date: Fri, 30 Aug 2013 18:47:07 -0400
|
||||
Message-ID: <20130830224707.21812.63516.stgit@hds.com>
|
||||
User-Agent: StGit/0.16
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Proofpoint-SPF-Result: pass
|
||||
X-Proofpoint-SPF-Record: v=spf1 mx ip4:207.126.244.0/26 ip4:207.126.252.0/25 include:mktomail.com
|
||||
include:cloud.hds.com ~all
|
||||
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.10.8794,1.0.431,0.0.0000
|
||||
definitions=2013-08-30_09:2013-08-30,2013-08-30,1970-01-01 signatures=0
|
||||
X-Proofpoint-Spam-Details: rule=notspam policy=outbound_policy score=0 spamscore=0 suspectscore=1
|
||||
phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx
|
||||
scancount=1 engine=7.0.1-1305240000 definitions=main-1308300162
|
||||
Sender: linux-kernel-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <linux-kernel.vger.kernel.org>
|
||||
X-Mailing-List: linux-kernel@vger.kernel.org
|
||||
|
||||
The soft lockup below happens at the boot time of the system using dm
|
||||
multipath and the udev rules to switch scheduler.
|
||||
|
||||
[ 356.127001] BUG: soft lockup - CPU#3 stuck for 22s! [sh:483]
|
||||
[ 356.127001] RIP: 0010:[<ffffffff81072a7d>] [<ffffffff81072a7d>] lock_timer_base.isra.35+0x1d/0x50
|
||||
...
|
||||
[ 356.127001] Call Trace:
|
||||
[ 356.127001] [<ffffffff81073810>] try_to_del_timer_sync+0x20/0x70
|
||||
[ 356.127001] [<ffffffff8118b08a>] ? kmem_cache_alloc_node_trace+0x20a/0x230
|
||||
[ 356.127001] [<ffffffff810738b2>] del_timer_sync+0x52/0x60
|
||||
[ 356.127001] [<ffffffff812ece22>] cfq_exit_queue+0x32/0xf0
|
||||
[ 356.127001] [<ffffffff812c98df>] elevator_exit+0x2f/0x50
|
||||
[ 356.127001] [<ffffffff812c9f21>] elevator_change+0xf1/0x1c0
|
||||
[ 356.127001] [<ffffffff812caa50>] elv_iosched_store+0x20/0x50
|
||||
[ 356.127001] [<ffffffff812d1d09>] queue_attr_store+0x59/0xb0
|
||||
[ 356.127001] [<ffffffff812143f6>] sysfs_write_file+0xc6/0x140
|
||||
[ 356.127001] [<ffffffff811a326d>] vfs_write+0xbd/0x1e0
|
||||
[ 356.127001] [<ffffffff811a3ca9>] SyS_write+0x49/0xa0
|
||||
[ 356.127001] [<ffffffff8164e899>] system_call_fastpath+0x16/0x1b
|
||||
|
||||
This is caused by a race between md device initialization by multipathd and
|
||||
shell script to switch the scheduler using sysfs.
|
||||
|
||||
- multipathd:
|
||||
SyS_ioctl -> do_vfs_ioctl -> dm_ctl_ioctl -> ctl_ioctl -> table_load
|
||||
-> dm_setup_md_queue -> blk_init_allocated_queue -> elevator_init
|
||||
q->elevator = elevator_alloc(q, e); // not yet initialized
|
||||
|
||||
- sh -c 'echo deadline > /sys/$DEVPATH/queue/scheduler':
|
||||
elevator_switch (in the call trace above)
|
||||
struct elevator_queue *old = q->elevator;
|
||||
q->elevator = elevator_alloc(q, new_e);
|
||||
elevator_exit(old); // lockup! (*)
|
||||
|
||||
- multipathd: (cont.)
|
||||
err = e->ops.elevator_init_fn(q); // init fails; q->elevator is modified
|
||||
|
||||
(*) When del_timer_sync() is called, lock_timer_base() will loop infinitely
|
||||
while timer->base == NULL. In this case, as timer will never initialized,
|
||||
it results in lockup.
|
||||
|
||||
This patch introduces acquisition of q->sysfs_lock around elevator_init()
|
||||
into blk_init_allocated_queue(), to provide mutual exclusion between
|
||||
initialization of the q->scheduler and switching of the scheduler.
|
||||
|
||||
This should fix this bugzilla:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=902012
|
||||
|
||||
Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
|
||||
---
|
||||
block/blk-core.c | 10 +++++++++-
|
||||
block/elevator.c | 6 ++++++
|
||||
2 files changed, 15 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/block/blk-core.c b/block/blk-core.c
|
||||
index 93a18d1..2f6275f 100644
|
||||
--- a/block/blk-core.c
|
||||
+++ b/block/blk-core.c
|
||||
@@ -739,9 +739,17 @@ blk_init_allocated_queue(struct request_queue *q, request_fn_proc *rfn,
|
||||
|
||||
q->sg_reserved_size = INT_MAX;
|
||||
|
||||
+ /* Protect q->elevator from elevator_change */
|
||||
+ mutex_lock(&q->sysfs_lock);
|
||||
+
|
||||
/* init elevator */
|
||||
- if (elevator_init(q, NULL))
|
||||
+ if (elevator_init(q, NULL)) {
|
||||
+ mutex_unlock(&q->sysfs_lock);
|
||||
return NULL;
|
||||
+ }
|
||||
+
|
||||
+ mutex_unlock(&q->sysfs_lock);
|
||||
+
|
||||
return q;
|
||||
}
|
||||
EXPORT_SYMBOL(blk_init_allocated_queue);
|
||||
diff --git a/block/elevator.c b/block/elevator.c
|
||||
index 668394d..02d4390 100644
|
||||
--- a/block/elevator.c
|
||||
+++ b/block/elevator.c
|
||||
@@ -186,6 +186,12 @@ int elevator_init(struct request_queue *q, char *name)
|
||||
struct elevator_type *e = NULL;
|
||||
int err;
|
||||
|
||||
+ /*
|
||||
+ * q->sysfs_lock must be held to provide mutual exclusion between
|
||||
+ * elevator_switch() and here.
|
||||
+ */
|
||||
+ lockdep_assert_held(&q->sysfs_lock);
|
||||
+
|
||||
if (unlikely(q->elevator))
|
||||
return 0;
|
||||
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
Please read the FAQ at http://www.tux.org/lkml/
|
@ -1,121 +0,0 @@
|
||||
|
||||
Delivered-To: jwboyer@gmail.com
|
||||
Received: by 10.76.168.104 with SMTP id zv8csp55623oab;
|
||||
Fri, 30 Aug 2013 15:51:42 -0700 (PDT)
|
||||
X-Received: by 10.67.30.70 with SMTP id kc6mr13149193pad.32.1377903101609;
|
||||
Fri, 30 Aug 2013 15:51:41 -0700 (PDT)
|
||||
Return-Path: <linux-kernel-owner@vger.kernel.org>
|
||||
Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67])
|
||||
by mx.google.com with ESMTP id gg2si304840pac.217.1969.12.31.16.00.00;
|
||||
Fri, 30 Aug 2013 15:51:41 -0700 (PDT)
|
||||
Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67;
|
||||
Authentication-Results: mx.google.com;
|
||||
spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mail=linux-kernel-owner@vger.kernel.org;
|
||||
dkim=neutral (bad format) header.i=@hds.com
|
||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1756106Ab3H3WrX (ORCPT <rfc822;georgezhim@gmail.com>
|
||||
+ 99 others); Fri, 30 Aug 2013 18:47:23 -0400
|
||||
Received: from usindpps04.hds.com ([207.126.252.17]:35640 "EHLO
|
||||
usindpps04.hds.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S1752650Ab3H3WrW (ORCPT
|
||||
<rfc822;linux-kernel@vger.kernel.org>);
|
||||
Fri, 30 Aug 2013 18:47:22 -0400
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=hds.com; h=subject : to : from : cc
|
||||
: date : message-id : in-reply-to : references : mime-version :
|
||||
content-type : content-transfer-encoding; s=mail1;
|
||||
bh=xbQuWVaSJrPfWG5E7bXFAbOFjf/sBaRZsPmpVgy0CYk=;
|
||||
b=NW/A8Imu32MXoBi5FLrQ0FsK66RTWMQo1bFRtgQplVEQQIAXyf1XhCaAZyTkTplc0iEx
|
||||
ovyGZHvLbmGL6w3I3pxkCFz1BPJCqoZtvQITir/WvfzyadYOK1cz+vuBUQSCmfkacvS/
|
||||
w37h1jLAjsvWXkl0GY7pxB9HJMXdeLnhhuWxtNU8m8rKZ7t3LSByMeQi5/3OTkNojDEe
|
||||
70cKeZXCPQ/UIDJAF4cpSVXia5FwoJISjXvQIrvqkYhFelzq3OHMcC482PdpqNB475h3
|
||||
yHHJ83HFOLRulUQdOG5ZVTB9qRg0zxRx/oedeXwzturFke68noRRa4f4izQ8sCwsWOCI Dw==
|
||||
Received: from usindmail01.hds.com (usindmail03 [207.126.252.22])
|
||||
by usindpps04.hds.com (8.14.5/8.14.5) with ESMTP id r7UMlHIc025543;
|
||||
Fri, 30 Aug 2013 18:47:17 -0400
|
||||
Received: from hds.com (usindnetf5d-vlan47float.corp.hds.com [10.74.73.11])
|
||||
by usindmail01.hds.com (8.14.1/8.14.1) with ESMTP id r7UMlGiC058545;
|
||||
Fri, 30 Aug 2013 18:47:17 -0400 (EDT)
|
||||
Subject: [PATCH v2 2/2] elevator: acquire q->sysfs_lock in elevator_change()
|
||||
To: linux-kernel@vger.kernel.org
|
||||
From: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
|
||||
Cc: axboe@kernel.dk, tj@kernel.org, seiji.aguchi@hds.com,
|
||||
vgoyal@redhat.com, majianpeng@gmail.com
|
||||
Date: Fri, 30 Aug 2013 18:47:16 -0400
|
||||
Message-ID: <20130830224716.21812.99333.stgit@hds.com>
|
||||
In-Reply-To: <20130830224707.21812.63516.stgit@hds.com>
|
||||
References: <20130830224707.21812.63516.stgit@hds.com>
|
||||
User-Agent: StGit/0.16
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Proofpoint-SPF-Result: pass
|
||||
X-Proofpoint-SPF-Record: v=spf1 mx ip4:207.126.244.0/26 ip4:207.126.252.0/25 include:mktomail.com
|
||||
include:cloud.hds.com ~all
|
||||
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.10.8794,1.0.431,0.0.0000
|
||||
definitions=2013-08-30_09:2013-08-30,2013-08-30,1970-01-01 signatures=0
|
||||
X-Proofpoint-Spam-Details: rule=notspam policy=outbound_policy score=0 spamscore=0 suspectscore=1
|
||||
phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx
|
||||
scancount=1 engine=7.0.1-1305240000 definitions=main-1308300162
|
||||
Sender: linux-kernel-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <linux-kernel.vger.kernel.org>
|
||||
X-Mailing-List: linux-kernel@vger.kernel.org
|
||||
|
||||
Add locking of q->sysfs_lock into elevator_change() (an exported function)
|
||||
to ensure it is held to protect q->elevator from elevator_init(), even if
|
||||
elevator_change() is called from non-sysfs paths.
|
||||
sysfs path (elv_iosched_store) uses __elevator_change(), non-locking
|
||||
version, as the lock is already taken by elv_iosched_store().
|
||||
|
||||
Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
|
||||
---
|
||||
block/elevator.c | 16 ++++++++++++++--
|
||||
1 file changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/block/elevator.c b/block/elevator.c
|
||||
index 02d4390..6d765f7 100644
|
||||
--- a/block/elevator.c
|
||||
+++ b/block/elevator.c
|
||||
@@ -965,7 +965,7 @@ fail_init:
|
||||
/*
|
||||
* Switch this queue to the given IO scheduler.
|
||||
*/
|
||||
-int elevator_change(struct request_queue *q, const char *name)
|
||||
+static int __elevator_change(struct request_queue *q, const char *name)
|
||||
{
|
||||
char elevator_name[ELV_NAME_MAX];
|
||||
struct elevator_type *e;
|
||||
@@ -987,6 +987,18 @@ int elevator_change(struct request_queue *q, const char *name)
|
||||
|
||||
return elevator_switch(q, e);
|
||||
}
|
||||
+
|
||||
+int elevator_change(struct request_queue *q, const char *name)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ /* Protect q->elevator from elevator_init() */
|
||||
+ mutex_lock(&q->sysfs_lock);
|
||||
+ ret = __elevator_change(q, name);
|
||||
+ mutex_unlock(&q->sysfs_lock);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
EXPORT_SYMBOL(elevator_change);
|
||||
|
||||
ssize_t elv_iosched_store(struct request_queue *q, const char *name,
|
||||
@@ -997,7 +1009,7 @@ ssize_t elv_iosched_store(struct request_queue *q, const char *name,
|
||||
if (!q->elevator)
|
||||
return count;
|
||||
|
||||
- ret = elevator_change(q, name);
|
||||
+ ret = __elevator_change(q, name);
|
||||
if (!ret)
|
||||
return count;
|
||||
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
Please read the FAQ at http://www.tux.org/lkml/
|
@ -1,76 +0,0 @@
|
||||
Allow threads other than the main thread to do introspection of files in
|
||||
proc without relying on read permissions. proc_pid_follow_link() calls
|
||||
proc_fd_access_allowed() which ultimately calls __ptrace_may_access().
|
||||
|
||||
Though this allows additional access to some proc files, we do not
|
||||
believe that this has any unintended security implications. However it
|
||||
probably needs to be looked at carefully.
|
||||
|
||||
The original problem was a thread of a process whose permissions were
|
||||
111 couldn't open its own /proc/self/exe This was interfering with a
|
||||
special purpose debugging tool. A simple reproducer is below.:
|
||||
|
||||
#include <pthread.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#define BUFSIZE 2048
|
||||
|
||||
void *thread_main(void *arg){
|
||||
char *str=(char*)arg;
|
||||
char buf[BUFSIZE];
|
||||
ssize_t len=readlink("/proc/self/exe", buf, BUFSIZE);
|
||||
if(len==-1)
|
||||
printf("/proc/self/exe in %s: %s\n", str,sys_errlist[errno]);
|
||||
else
|
||||
printf("/proc/self/exe in %s: OK\n", str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(){
|
||||
pthread_t thread;
|
||||
|
||||
int retval=pthread_create( &thread, NULL, thread_main, "thread");
|
||||
if(retval!=0)
|
||||
exit(1);
|
||||
|
||||
thread_main("main");
|
||||
pthread_join(thread, NULL);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
Signed-off-by: Ben Woodard <woodard@redhat.com>
|
||||
Signed-off-by: Mark Grondona <mgrondona@llnl.gov>
|
||||
---
|
||||
kernel/ptrace.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
|
||||
index acbd284..347c4c7 100644
|
||||
--- a/kernel/ptrace.c
|
||||
+++ b/kernel/ptrace.c
|
||||
diff -ruNp linux-3.8.4-103.fc17.noarch/kernel/ptrace.c linux-3.8.4-103.fc17.ptrace/kernel/ptrace.c
|
||||
--- linux-3.8.4-103.fc17.noarch/kernel/ptrace.c 2013-02-18 17:58:34.000000000 -0600
|
||||
+++ linux-3.8.4-103.fc17.ptrace/kernel/ptrace.c 2013-03-26 14:59:01.939396346 -0500
|
||||
@@ -234,7 +234,7 @@ static int __ptrace_may_access(struct ta
|
||||
*/
|
||||
int dumpable = 0;
|
||||
/* Don't let security modules deny introspection */
|
||||
- if (task == current)
|
||||
+ if (same_thread_group(task, current))
|
||||
return 0;
|
||||
rcu_read_lock();
|
||||
tcred = __task_cred(task);
|
||||
--
|
||||
1.8.1.4
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
Please read the FAQ at http://www.tux.org/lkml/
|
@ -1,154 +0,0 @@
|
||||
From 062c2e4363451d49ef840232fe65e8bff0dde2a5 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
Date: Fri, 27 Sep 2013 18:09:54 -0400
|
||||
Subject: [PATCH 1/4] drm/radeon: use 64-bit math to calculate CTS values for
|
||||
audio (v2)
|
||||
|
||||
Avoid losing precision. See bug:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=69675
|
||||
|
||||
v2: fix math as per Anssi's comments.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/r600_hdmi.c | 11 +++++++++--
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
index b0fa600..49043a5 100644
|
||||
--- a/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
+++ b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
@@ -75,8 +75,15 @@ static const struct radeon_hdmi_acr r600_hdmi_predefined_acr[] = {
|
||||
*/
|
||||
static void r600_hdmi_calc_cts(uint32_t clock, int *CTS, int N, int freq)
|
||||
{
|
||||
- if (*CTS == 0)
|
||||
- *CTS = clock * N / (128 * freq) * 1000;
|
||||
+ u64 n;
|
||||
+ u32 d;
|
||||
+
|
||||
+ if (*CTS == 0) {
|
||||
+ n = (u64)clock * (u64)N * 1000ULL;
|
||||
+ d = 128 * freq;
|
||||
+ do_div(n, d);
|
||||
+ *CTS = n;
|
||||
+ }
|
||||
DRM_DEBUG("Using ACR timing N=%d CTS=%d for frequency %d\n",
|
||||
N, *CTS, freq);
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From e7d12c2f98ae1e68c7298e5028048d150fa553a1 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
Date: Fri, 27 Sep 2013 18:19:42 -0400
|
||||
Subject: [PATCH 2/4] drm/radeon: fix N/CTS clock matching for audio
|
||||
|
||||
The drm code that calculates the 1001 clocks rounds up
|
||||
rather than truncating. This allows the table to match
|
||||
properly on those modes.
|
||||
|
||||
See bug:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=69675
|
||||
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/r600_hdmi.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
index 49043a5..567703f 100644
|
||||
--- a/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
+++ b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
@@ -57,15 +57,15 @@ enum r600_hdmi_iec_status_bits {
|
||||
static const struct radeon_hdmi_acr r600_hdmi_predefined_acr[] = {
|
||||
/* 32kHz 44.1kHz 48kHz */
|
||||
/* Clock N CTS N CTS N CTS */
|
||||
- { 25174, 4576, 28125, 7007, 31250, 6864, 28125 }, /* 25,20/1.001 MHz */
|
||||
+ { 25175, 4576, 28125, 7007, 31250, 6864, 28125 }, /* 25,20/1.001 MHz */
|
||||
{ 25200, 4096, 25200, 6272, 28000, 6144, 25200 }, /* 25.20 MHz */
|
||||
{ 27000, 4096, 27000, 6272, 30000, 6144, 27000 }, /* 27.00 MHz */
|
||||
{ 27027, 4096, 27027, 6272, 30030, 6144, 27027 }, /* 27.00*1.001 MHz */
|
||||
{ 54000, 4096, 54000, 6272, 60000, 6144, 54000 }, /* 54.00 MHz */
|
||||
{ 54054, 4096, 54054, 6272, 60060, 6144, 54054 }, /* 54.00*1.001 MHz */
|
||||
- { 74175, 11648, 210937, 17836, 234375, 11648, 140625 }, /* 74.25/1.001 MHz */
|
||||
+ { 74176, 11648, 210937, 17836, 234375, 11648, 140625 }, /* 74.25/1.001 MHz */
|
||||
{ 74250, 4096, 74250, 6272, 82500, 6144, 74250 }, /* 74.25 MHz */
|
||||
- { 148351, 11648, 421875, 8918, 234375, 5824, 140625 }, /* 148.50/1.001 MHz */
|
||||
+ { 148352, 11648, 421875, 8918, 234375, 5824, 140625 }, /* 148.50/1.001 MHz */
|
||||
{ 148500, 4096, 148500, 6272, 165000, 6144, 148500 }, /* 148.50 MHz */
|
||||
{ 0, 4096, 0, 6272, 0, 6144, 0 } /* Other */
|
||||
};
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From ee0fec312a1c4e26f255955da942562cd8908a4b Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
Date: Fri, 27 Sep 2013 18:22:15 -0400
|
||||
Subject: [PATCH 3/4] drm/radeon: use hw generated CTS/N values for audio
|
||||
|
||||
Use the hw generated values rather than calculating
|
||||
them in the driver. There may be some older r6xx
|
||||
asics where this doesn't work correctly. This remains
|
||||
to be seen.
|
||||
|
||||
See bug:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=69675
|
||||
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/r600_hdmi.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
index 567703f..e2ae1c2 100644
|
||||
--- a/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
+++ b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
@@ -451,8 +451,7 @@ void r600_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mod
|
||||
}
|
||||
|
||||
WREG32(HDMI0_ACR_PACKET_CONTROL + offset,
|
||||
- HDMI0_ACR_AUTO_SEND | /* allow hw to sent ACR packets when required */
|
||||
- HDMI0_ACR_SOURCE); /* select SW CTS value */
|
||||
+ HDMI0_ACR_AUTO_SEND); /* allow hw to sent ACR packets when required */
|
||||
|
||||
WREG32(HDMI0_VBI_PACKET_CONTROL + offset,
|
||||
HDMI0_NULL_SEND | /* send null packets when required */
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From b852c985010a77c850b7548d64bbb964ca462b02 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
Date: Thu, 10 Oct 2013 11:47:01 -0400
|
||||
Subject: [PATCH 4/4] drm/radeon: re-enable sw ACR support on pre-DCE4
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
HW ACR support may have issues on some older chips, so
|
||||
use SW ACR for now until we've tested further.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
CC: Rafał Miłecki <zajec5@gmail.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/r600_hdmi.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
index e2ae1c2..5b72931 100644
|
||||
--- a/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
+++ b/drivers/gpu/drm/radeon/r600_hdmi.c
|
||||
@@ -451,6 +451,7 @@ void r600_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mod
|
||||
}
|
||||
|
||||
WREG32(HDMI0_ACR_PACKET_CONTROL + offset,
|
||||
+ HDMI0_ACR_SOURCE | /* select SW CTS value - XXX verify that hw CTS works on all families */
|
||||
HDMI0_ACR_AUTO_SEND); /* allow hw to sent ACR packets when required */
|
||||
|
||||
WREG32(HDMI0_VBI_PACKET_CONTROL + offset,
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,253 +0,0 @@
|
||||
Bugzilla: 1035887
|
||||
Upstream-status: 3.13
|
||||
|
||||
From 4be402ba6158068d53ab0268f1affa9d82dae2ec Mon Sep 17 00:00:00 2001
|
||||
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Date: Fri, 22 Nov 2013 23:46:12 +0000
|
||||
Subject: [PATCH] inet: fix addr_len/msg->msg_namelen assignment in recv_error
|
||||
and rxpmtu functions
|
||||
|
||||
Commit bceaa90240b6019ed73b49965eac7d167610be69 ("inet: prevent leakage
|
||||
of uninitialized memory to user in recv syscalls") conditionally updated
|
||||
addr_len if the msg_name is written to. The recv_error and rxpmtu
|
||||
functions relied on the recvmsg functions to set up addr_len before.
|
||||
|
||||
As this does not happen any more we have to pass addr_len to those
|
||||
functions as well and set it to the size of the corresponding sockaddr
|
||||
length.
|
||||
|
||||
This broke traceroute and such.
|
||||
|
||||
Fixes: bceaa90240b6 ("inet: prevent leakage of uninitialized memory to user in recv syscalls")
|
||||
Reported-by: Brad Spengler <spender@grsecurity.net>
|
||||
Reported-by: Tom Labanowski
|
||||
Cc: mpb <mpb.mail@gmail.com>
|
||||
Cc: David S. Miller <davem@davemloft.net>
|
||||
Cc: Eric Dumazet <eric.dumazet@gmail.com>
|
||||
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
include/net/ip.h | 2 +-
|
||||
include/net/ipv6.h | 4 ++--
|
||||
include/net/ping.h | 3 ++-
|
||||
net/ipv4/ip_sockglue.c | 3 ++-
|
||||
net/ipv4/ping.c | 5 +++--
|
||||
net/ipv4/raw.c | 2 +-
|
||||
net/ipv4/udp.c | 2 +-
|
||||
net/ipv6/datagram.c | 7 +++++--
|
||||
net/ipv6/ping.c | 3 ++-
|
||||
net/ipv6/raw.c | 4 ++--
|
||||
net/ipv6/udp.c | 4 ++--
|
||||
net/l2tp/l2tp_ip6.c | 2 +-
|
||||
12 files changed, 24 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/include/net/ip.h b/include/net/ip.h
|
||||
index 5e52688..301f10c 100644
|
||||
--- a/include/net/ip.h
|
||||
+++ b/include/net/ip.h
|
||||
@@ -464,7 +464,7 @@ extern int compat_ip_getsockopt(struct sock *sk, int level,
|
||||
int optname, char __user *optval, int __user *optlen);
|
||||
extern int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct sock *));
|
||||
|
||||
-extern int ip_recv_error(struct sock *sk, struct msghdr *msg, int len);
|
||||
+extern int ip_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len);
|
||||
extern void ip_icmp_error(struct sock *sk, struct sk_buff *skb, int err,
|
||||
__be16 port, u32 info, u8 *payload);
|
||||
extern void ip_local_error(struct sock *sk, int err, __be32 daddr, __be16 dport,
|
||||
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
|
||||
index bbf1c8f..5529d79 100644
|
||||
--- a/include/net/ipv6.h
|
||||
+++ b/include/net/ipv6.h
|
||||
@@ -802,8 +802,8 @@ extern int compat_ipv6_getsockopt(struct sock *sk,
|
||||
extern int ip6_datagram_connect(struct sock *sk,
|
||||
struct sockaddr *addr, int addr_len);
|
||||
|
||||
-extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len);
|
||||
-extern int ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len);
|
||||
+extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len);
|
||||
+extern int ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len, int *addr_len);
|
||||
extern void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, __be16 port,
|
||||
u32 info, u8 *payload);
|
||||
extern void ipv6_local_error(struct sock *sk, int err, struct flowi6 *fl6, u32 info);
|
||||
diff --git a/include/net/ping.h b/include/net/ping.h
|
||||
index 5db0224..2b496e9 100644
|
||||
--- a/include/net/ping.h
|
||||
+++ b/include/net/ping.h
|
||||
@@ -31,7 +31,8 @@
|
||||
|
||||
/* Compatibility glue so we can support IPv6 when it's compiled as a module */
|
||||
struct pingv6_ops {
|
||||
- int (*ipv6_recv_error)(struct sock *sk, struct msghdr *msg, int len);
|
||||
+ int (*ipv6_recv_error)(struct sock *sk, struct msghdr *msg, int len,
|
||||
+ int *addr_len);
|
||||
int (*ip6_datagram_recv_ctl)(struct sock *sk, struct msghdr *msg,
|
||||
struct sk_buff *skb);
|
||||
int (*icmpv6_err_convert)(u8 type, u8 code, int *err);
|
||||
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
|
||||
index d9c4f11..23e6ab0 100644
|
||||
--- a/net/ipv4/ip_sockglue.c
|
||||
+++ b/net/ipv4/ip_sockglue.c
|
||||
@@ -368,7 +368,7 @@ void ip_local_error(struct sock *sk, int err, __be32 daddr, __be16 port, u32 inf
|
||||
/*
|
||||
* Handle MSG_ERRQUEUE
|
||||
*/
|
||||
-int ip_recv_error(struct sock *sk, struct msghdr *msg, int len)
|
||||
+int ip_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
|
||||
{
|
||||
struct sock_exterr_skb *serr;
|
||||
struct sk_buff *skb, *skb2;
|
||||
@@ -405,6 +405,7 @@ int ip_recv_error(struct sock *sk, struct msghdr *msg, int len)
|
||||
serr->addr_offset);
|
||||
sin->sin_port = serr->port;
|
||||
memset(&sin->sin_zero, 0, sizeof(sin->sin_zero));
|
||||
+ *addr_len = sizeof(*sin);
|
||||
}
|
||||
|
||||
memcpy(&errhdr.ee, &serr->ee, sizeof(struct sock_extended_err));
|
||||
diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
|
||||
index 92fb6ff..ac31877 100644
|
||||
--- a/net/ipv4/ping.c
|
||||
+++ b/net/ipv4/ping.c
|
||||
@@ -838,10 +838,11 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
|
||||
if (flags & MSG_ERRQUEUE) {
|
||||
if (family == AF_INET) {
|
||||
- return ip_recv_error(sk, msg, len);
|
||||
+ return ip_recv_error(sk, msg, len, addr_len);
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
} else if (family == AF_INET6) {
|
||||
- return pingv6_ops.ipv6_recv_error(sk, msg, len);
|
||||
+ return pingv6_ops.ipv6_recv_error(sk, msg, len,
|
||||
+ addr_len);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
|
||||
index ca4c3f1..7d3db78 100644
|
||||
--- a/net/ipv4/raw.c
|
||||
+++ b/net/ipv4/raw.c
|
||||
@@ -695,7 +695,7 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
goto out;
|
||||
|
||||
if (flags & MSG_ERRQUEUE) {
|
||||
- err = ip_recv_error(sk, msg, len);
|
||||
+ err = ip_recv_error(sk, msg, len, addr_len);
|
||||
goto out;
|
||||
}
|
||||
|
||||
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
|
||||
index a7003de..1ef8794 100644
|
||||
--- a/net/ipv4/udp.c
|
||||
+++ b/net/ipv4/udp.c
|
||||
@@ -1210,7 +1210,7 @@ int udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
bool slow;
|
||||
|
||||
if (flags & MSG_ERRQUEUE)
|
||||
- return ip_recv_error(sk, msg, len);
|
||||
+ return ip_recv_error(sk, msg, len, addr_len);
|
||||
|
||||
try_again:
|
||||
skb = __skb_recv_datagram(sk, flags | (noblock ? MSG_DONTWAIT : 0),
|
||||
diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c
|
||||
index 48b6bd2..7a0fd80 100644
|
||||
--- a/net/ipv6/datagram.c
|
||||
+++ b/net/ipv6/datagram.c
|
||||
@@ -318,7 +318,7 @@ void ipv6_local_rxpmtu(struct sock *sk, struct flowi6 *fl6, u32 mtu)
|
||||
/*
|
||||
* Handle MSG_ERRQUEUE
|
||||
*/
|
||||
-int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len)
|
||||
+int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
|
||||
{
|
||||
struct ipv6_pinfo *np = inet6_sk(sk);
|
||||
struct sock_exterr_skb *serr;
|
||||
@@ -369,6 +369,7 @@ int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len)
|
||||
&sin->sin6_addr);
|
||||
sin->sin6_scope_id = 0;
|
||||
}
|
||||
+ *addr_len = sizeof(*sin);
|
||||
}
|
||||
|
||||
memcpy(&errhdr.ee, &serr->ee, sizeof(struct sock_extended_err));
|
||||
@@ -423,7 +424,8 @@ EXPORT_SYMBOL_GPL(ipv6_recv_error);
|
||||
/*
|
||||
* Handle IPV6_RECVPATHMTU
|
||||
*/
|
||||
-int ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len)
|
||||
+int ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len,
|
||||
+ int *addr_len)
|
||||
{
|
||||
struct ipv6_pinfo *np = inet6_sk(sk);
|
||||
struct sk_buff *skb;
|
||||
@@ -457,6 +459,7 @@ int ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len)
|
||||
sin->sin6_port = 0;
|
||||
sin->sin6_scope_id = mtu_info.ip6m_addr.sin6_scope_id;
|
||||
sin->sin6_addr = mtu_info.ip6m_addr.sin6_addr;
|
||||
+ *addr_len = sizeof(*sin);
|
||||
}
|
||||
|
||||
put_cmsg(msg, SOL_IPV6, IPV6_PATHMTU, sizeof(mtu_info), &mtu_info);
|
||||
diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c
|
||||
index 18f19df..7856e96 100644
|
||||
--- a/net/ipv6/ping.c
|
||||
+++ b/net/ipv6/ping.c
|
||||
@@ -57,7 +57,8 @@ static struct inet_protosw pingv6_protosw = {
|
||||
|
||||
|
||||
/* Compatibility glue so we can support IPv6 when it's compiled as a module */
|
||||
-static int dummy_ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len)
|
||||
+static int dummy_ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len,
|
||||
+ int *addr_len)
|
||||
{
|
||||
return -EAFNOSUPPORT;
|
||||
}
|
||||
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
|
||||
index 2f303bf..430067c 100644
|
||||
--- a/net/ipv6/raw.c
|
||||
+++ b/net/ipv6/raw.c
|
||||
@@ -467,10 +467,10 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (flags & MSG_ERRQUEUE)
|
||||
- return ipv6_recv_error(sk, msg, len);
|
||||
+ return ipv6_recv_error(sk, msg, len, addr_len);
|
||||
|
||||
if (np->rxpmtu && np->rxopt.bits.rxpmtu)
|
||||
- return ipv6_recv_rxpmtu(sk, msg, len);
|
||||
+ return ipv6_recv_rxpmtu(sk, msg, len, addr_len);
|
||||
|
||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
||||
if (!skb)
|
||||
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
|
||||
index a59beed..3d2758d 100644
|
||||
--- a/net/ipv6/udp.c
|
||||
+++ b/net/ipv6/udp.c
|
||||
@@ -375,10 +375,10 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||
bool slow;
|
||||
|
||||
if (flags & MSG_ERRQUEUE)
|
||||
- return ipv6_recv_error(sk, msg, len);
|
||||
+ return ipv6_recv_error(sk, msg, len, addr_len);
|
||||
|
||||
if (np->rxpmtu && np->rxopt.bits.rxpmtu)
|
||||
- return ipv6_recv_rxpmtu(sk, msg, len);
|
||||
+ return ipv6_recv_rxpmtu(sk, msg, len, addr_len);
|
||||
|
||||
try_again:
|
||||
skb = __skb_recv_datagram(sk, flags | (noblock ? MSG_DONTWAIT : 0),
|
||||
diff --git a/net/l2tp/l2tp_ip6.c b/net/l2tp/l2tp_ip6.c
|
||||
index b8a6039..e6e8408 100644
|
||||
--- a/net/l2tp/l2tp_ip6.c
|
||||
+++ b/net/l2tp/l2tp_ip6.c
|
||||
@@ -665,7 +665,7 @@ static int l2tp_ip6_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||
*addr_len = sizeof(*lsa);
|
||||
|
||||
if (flags & MSG_ERRQUEUE)
|
||||
- return ipv6_recv_error(sk, msg, len);
|
||||
+ return ipv6_recv_error(sk, msg, len, addr_len);
|
||||
|
||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
||||
if (!skb)
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,256 +0,0 @@
|
||||
Bugzilla: 1035887
|
||||
Upstream-status: 3.13
|
||||
|
||||
From bceaa90240b6019ed73b49965eac7d167610be69 Mon Sep 17 00:00:00 2001
|
||||
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Date: Mon, 18 Nov 2013 04:20:45 +0100
|
||||
Subject: [PATCH] inet: prevent leakage of uninitialized memory to user in recv
|
||||
syscalls
|
||||
|
||||
Only update *addr_len when we actually fill in sockaddr, otherwise we
|
||||
can return uninitialized memory from the stack to the caller in the
|
||||
recvfrom, recvmmsg and recvmsg syscalls. Drop the the (addr_len == NULL)
|
||||
checks because we only get called with a valid addr_len pointer either
|
||||
from sock_common_recvmsg or inet_recvmsg.
|
||||
|
||||
If a blocking read waits on a socket which is concurrently shut down we
|
||||
now return zero and set msg_msgnamelen to 0.
|
||||
|
||||
Reported-by: mpb <mpb.mail@gmail.com>
|
||||
Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
|
||||
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/ieee802154/dgram.c | 3 +--
|
||||
net/ipv4/ping.c | 19 +++++++------------
|
||||
net/ipv4/raw.c | 4 +---
|
||||
net/ipv4/udp.c | 7 +------
|
||||
net/ipv6/raw.c | 4 +---
|
||||
net/ipv6/udp.c | 5 +----
|
||||
net/l2tp/l2tp_ip.c | 4 +---
|
||||
net/phonet/datagram.c | 9 ++++-----
|
||||
8 files changed, 17 insertions(+), 38 deletions(-)
|
||||
|
||||
diff --git a/net/ieee802154/dgram.c b/net/ieee802154/dgram.c
|
||||
index 581a595..1865fdf 100644
|
||||
--- a/net/ieee802154/dgram.c
|
||||
+++ b/net/ieee802154/dgram.c
|
||||
@@ -315,9 +315,8 @@ static int dgram_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||
if (saddr) {
|
||||
saddr->family = AF_IEEE802154;
|
||||
saddr->addr = mac_cb(skb)->sa;
|
||||
- }
|
||||
- if (addr_len)
|
||||
*addr_len = sizeof(*saddr);
|
||||
+ }
|
||||
|
||||
if (flags & MSG_TRUNC)
|
||||
copied = skb->len;
|
||||
diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
|
||||
index 9afbdb1..aacefa0 100644
|
||||
--- a/net/ipv4/ping.c
|
||||
+++ b/net/ipv4/ping.c
|
||||
@@ -830,8 +830,6 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
{
|
||||
struct inet_sock *isk = inet_sk(sk);
|
||||
int family = sk->sk_family;
|
||||
- struct sockaddr_in *sin;
|
||||
- struct sockaddr_in6 *sin6;
|
||||
struct sk_buff *skb;
|
||||
int copied, err;
|
||||
|
||||
@@ -841,13 +839,6 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
if (flags & MSG_OOB)
|
||||
goto out;
|
||||
|
||||
- if (addr_len) {
|
||||
- if (family == AF_INET)
|
||||
- *addr_len = sizeof(*sin);
|
||||
- else if (family == AF_INET6 && addr_len)
|
||||
- *addr_len = sizeof(*sin6);
|
||||
- }
|
||||
-
|
||||
if (flags & MSG_ERRQUEUE) {
|
||||
if (family == AF_INET) {
|
||||
return ip_recv_error(sk, msg, len);
|
||||
@@ -877,11 +868,13 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
|
||||
/* Copy the address and add cmsg data. */
|
||||
if (family == AF_INET) {
|
||||
- sin = (struct sockaddr_in *) msg->msg_name;
|
||||
+ struct sockaddr_in *sin = (struct sockaddr_in *)msg->msg_name;
|
||||
+
|
||||
sin->sin_family = AF_INET;
|
||||
sin->sin_port = 0 /* skb->h.uh->source */;
|
||||
sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
|
||||
memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
|
||||
+ *addr_len = sizeof(*sin);
|
||||
|
||||
if (isk->cmsg_flags)
|
||||
ip_cmsg_recv(msg, skb);
|
||||
@@ -890,17 +883,19 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
} else if (family == AF_INET6) {
|
||||
struct ipv6_pinfo *np = inet6_sk(sk);
|
||||
struct ipv6hdr *ip6 = ipv6_hdr(skb);
|
||||
- sin6 = (struct sockaddr_in6 *) msg->msg_name;
|
||||
+ struct sockaddr_in6 *sin6 =
|
||||
+ (struct sockaddr_in6 *)msg->msg_name;
|
||||
+
|
||||
sin6->sin6_family = AF_INET6;
|
||||
sin6->sin6_port = 0;
|
||||
sin6->sin6_addr = ip6->saddr;
|
||||
-
|
||||
sin6->sin6_flowinfo = 0;
|
||||
if (np->sndflow)
|
||||
sin6->sin6_flowinfo = ip6_flowinfo(ip6);
|
||||
|
||||
sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr,
|
||||
IP6CB(skb)->iif);
|
||||
+ *addr_len = sizeof(*sin6);
|
||||
|
||||
if (inet6_sk(sk)->rxopt.all)
|
||||
pingv6_ops.ip6_datagram_recv_ctl(sk, msg, skb);
|
||||
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
|
||||
index 41e1d28..5cb8ddb 100644
|
||||
--- a/net/ipv4/raw.c
|
||||
+++ b/net/ipv4/raw.c
|
||||
@@ -696,9 +696,6 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
if (flags & MSG_OOB)
|
||||
goto out;
|
||||
|
||||
- if (addr_len)
|
||||
- *addr_len = sizeof(*sin);
|
||||
-
|
||||
if (flags & MSG_ERRQUEUE) {
|
||||
err = ip_recv_error(sk, msg, len);
|
||||
goto out;
|
||||
@@ -726,6 +723,7 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
|
||||
sin->sin_port = 0;
|
||||
memset(&sin->sin_zero, 0, sizeof(sin->sin_zero));
|
||||
+ *addr_len = sizeof(*sin);
|
||||
}
|
||||
if (inet->cmsg_flags)
|
||||
ip_cmsg_recv(msg, skb);
|
||||
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
|
||||
index 89909dd..998431c 100644
|
||||
--- a/net/ipv4/udp.c
|
||||
+++ b/net/ipv4/udp.c
|
||||
@@ -1235,12 +1235,6 @@ int udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
int is_udplite = IS_UDPLITE(sk);
|
||||
bool slow;
|
||||
|
||||
- /*
|
||||
- * Check any passed addresses
|
||||
- */
|
||||
- if (addr_len)
|
||||
- *addr_len = sizeof(*sin);
|
||||
-
|
||||
if (flags & MSG_ERRQUEUE)
|
||||
return ip_recv_error(sk, msg, len);
|
||||
|
||||
@@ -1302,6 +1296,7 @@ try_again:
|
||||
sin->sin_port = udp_hdr(skb)->source;
|
||||
sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
|
||||
memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
|
||||
+ *addr_len = sizeof(*sin);
|
||||
}
|
||||
if (inet->cmsg_flags)
|
||||
ip_cmsg_recv(msg, skb);
|
||||
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
|
||||
index 3c00842..e24ff1d 100644
|
||||
--- a/net/ipv6/raw.c
|
||||
+++ b/net/ipv6/raw.c
|
||||
@@ -465,9 +465,6 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||
if (flags & MSG_OOB)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
- if (addr_len)
|
||||
- *addr_len=sizeof(*sin6);
|
||||
-
|
||||
if (flags & MSG_ERRQUEUE)
|
||||
return ipv6_recv_error(sk, msg, len);
|
||||
|
||||
@@ -506,6 +503,7 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||
sin6->sin6_flowinfo = 0;
|
||||
sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr,
|
||||
IP6CB(skb)->iif);
|
||||
+ *addr_len = sizeof(*sin6);
|
||||
}
|
||||
|
||||
sock_recv_ts_and_drops(msg, sk, skb);
|
||||
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
|
||||
index f3893e8..81eb8cf 100644
|
||||
--- a/net/ipv6/udp.c
|
||||
+++ b/net/ipv6/udp.c
|
||||
@@ -392,9 +392,6 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||
int is_udp4;
|
||||
bool slow;
|
||||
|
||||
- if (addr_len)
|
||||
- *addr_len = sizeof(struct sockaddr_in6);
|
||||
-
|
||||
if (flags & MSG_ERRQUEUE)
|
||||
return ipv6_recv_error(sk, msg, len);
|
||||
|
||||
@@ -480,7 +477,7 @@ try_again:
|
||||
ipv6_iface_scope_id(&sin6->sin6_addr,
|
||||
IP6CB(skb)->iif);
|
||||
}
|
||||
-
|
||||
+ *addr_len = sizeof(*sin6);
|
||||
}
|
||||
if (is_udp4) {
|
||||
if (inet->cmsg_flags)
|
||||
diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
|
||||
index 571db8d..da1a1ce 100644
|
||||
--- a/net/l2tp/l2tp_ip.c
|
||||
+++ b/net/l2tp/l2tp_ip.c
|
||||
@@ -518,9 +518,6 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
|
||||
if (flags & MSG_OOB)
|
||||
goto out;
|
||||
|
||||
- if (addr_len)
|
||||
- *addr_len = sizeof(*sin);
|
||||
-
|
||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
||||
if (!skb)
|
||||
goto out;
|
||||
@@ -543,6 +540,7 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
|
||||
sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
|
||||
sin->sin_port = 0;
|
||||
memset(&sin->sin_zero, 0, sizeof(sin->sin_zero));
|
||||
+ *addr_len = sizeof(*sin);
|
||||
}
|
||||
if (inet->cmsg_flags)
|
||||
ip_cmsg_recv(msg, skb);
|
||||
diff --git a/net/phonet/datagram.c b/net/phonet/datagram.c
|
||||
index 12c30f3..38946b2 100644
|
||||
--- a/net/phonet/datagram.c
|
||||
+++ b/net/phonet/datagram.c
|
||||
@@ -139,9 +139,6 @@ static int pn_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||
MSG_CMSG_COMPAT))
|
||||
goto out_nofree;
|
||||
|
||||
- if (addr_len)
|
||||
- *addr_len = sizeof(sa);
|
||||
-
|
||||
skb = skb_recv_datagram(sk, flags, noblock, &rval);
|
||||
if (skb == NULL)
|
||||
goto out_nofree;
|
||||
@@ -162,8 +159,10 @@ static int pn_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||
|
||||
rval = (flags & MSG_TRUNC) ? skb->len : copylen;
|
||||
|
||||
- if (msg->msg_name != NULL)
|
||||
- memcpy(msg->msg_name, &sa, sizeof(struct sockaddr_pn));
|
||||
+ if (msg->msg_name != NULL) {
|
||||
+ memcpy(msg->msg_name, &sa, sizeof(sa));
|
||||
+ *addr_len = sizeof(sa);
|
||||
+ }
|
||||
|
||||
out:
|
||||
skb_free_datagram(sk, skb);
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,47 +0,0 @@
|
||||
From 05104a4e8713b27291c7bb49c1e7e68b4e243571 Mon Sep 17 00:00:00 2001
|
||||
From: Neil Horman <nhorman@tuxdriver.com>
|
||||
Date: Fri, 27 Sep 2013 16:53:35 +0000
|
||||
Subject: iommu: Remove stack trace from broken irq remapping warning
|
||||
|
||||
The warning for the irq remapping broken check in intel_irq_remapping.c is
|
||||
pretty pointless. We need the warning, but we know where its comming from, the
|
||||
stack trace will always be the same, and it needlessly triggers things like
|
||||
Abrt. This changes the warning to just print a text warning about BIOS being
|
||||
broken, without the stack trace, then sets the appropriate taint bit. Since we
|
||||
automatically disable irq remapping, theres no need to contiue making Abrt jump
|
||||
at this problem
|
||||
|
||||
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
|
||||
CC: Joerg Roedel <joro@8bytes.org>
|
||||
CC: Bjorn Helgaas <bhelgaas@google.com>
|
||||
CC: Andy Lutomirski <luto@amacapital.net>
|
||||
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
CC: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
|
||||
Signed-off-by: Joerg Roedel <joro@8bytes.org>
|
||||
---
|
||||
diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
|
||||
index f71673d..b97d70b 100644
|
||||
--- a/drivers/iommu/intel_irq_remapping.c
|
||||
+++ b/drivers/iommu/intel_irq_remapping.c
|
||||
@@ -525,12 +525,13 @@ static int __init intel_irq_remapping_supported(void)
|
||||
if (disable_irq_remap)
|
||||
return 0;
|
||||
if (irq_remap_broken) {
|
||||
- WARN_TAINT(1, TAINT_FIRMWARE_WORKAROUND,
|
||||
- "This system BIOS has enabled interrupt remapping\n"
|
||||
- "on a chipset that contains an erratum making that\n"
|
||||
- "feature unstable. To maintain system stability\n"
|
||||
- "interrupt remapping is being disabled. Please\n"
|
||||
- "contact your BIOS vendor for an update\n");
|
||||
+ printk(KERN_WARNING
|
||||
+ "This system BIOS has enabled interrupt remapping\n"
|
||||
+ "on a chipset that contains an erratum making that\n"
|
||||
+ "feature unstable. To maintain system stability\n"
|
||||
+ "interrupt remapping is being disabled. Please\n"
|
||||
+ "contact your BIOS vendor for an update\n");
|
||||
+ add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK);
|
||||
disable_irq_remap = 1;
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
cgit v0.9.2
|
@ -1,43 +0,0 @@
|
||||
Bugzilla: 1030015 1030017
|
||||
Upstream-status: 3.13
|
||||
|
||||
From aeb45260747b0a1bf4d374d5e65298cc254cb4f5 Mon Sep 17 00:00:00 2001
|
||||
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Date: Tue, 5 Nov 2013 02:41:27 +0100
|
||||
Subject: [PATCH] ipv6: fix headroom calculation in udp6_ufo_fragment
|
||||
|
||||
Commit 1e2bd517c108816220f262d7954b697af03b5f9c ("udp6: Fix udp
|
||||
fragmentation for tunnel traffic.") changed the calculation if
|
||||
there is enough space to include a fragment header in the skb from a
|
||||
skb->mac_header dervived one to skb_headroom. Because we already peeled
|
||||
off the skb to transport_header this is wrong. Change this back to check
|
||||
if we have enough room before the mac_header.
|
||||
|
||||
This fixes a panic Saran Neti reported. He used the tbf scheduler which
|
||||
skb_gso_segments the skb. The offsets get negative and we panic in memcpy
|
||||
because the skb was erroneously not expanded at the head.
|
||||
|
||||
Reported-by: Saran Neti <Saran.Neti@telus.com>
|
||||
Cc: Pravin B Shelar <pshelar@nicira.com>
|
||||
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/ipv6/udp_offload.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/ipv6/udp_offload.c b/net/ipv6/udp_offload.c
|
||||
index 5d1b8d7..657914b 100644
|
||||
--- a/net/ipv6/udp_offload.c
|
||||
+++ b/net/ipv6/udp_offload.c
|
||||
@@ -86,7 +86,7 @@ static struct sk_buff *udp6_ufo_fragment(struct sk_buff *skb,
|
||||
|
||||
/* Check if there is enough headroom to insert fragment header. */
|
||||
tnl_hlen = skb_tnl_header_len(skb);
|
||||
- if (skb_headroom(skb) < (tnl_hlen + frag_hdr_sz)) {
|
||||
+ if (skb->mac_header < (tnl_hlen + frag_hdr_sz)) {
|
||||
if (gso_pskb_expand_head(skb, tnl_hlen + frag_hdr_sz))
|
||||
goto out;
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,97 +0,0 @@
|
||||
From: Eric Dumazet <edumazet@google.com>
|
||||
|
||||
Steinar reported reallocations of skb->head with IPv6, leading to
|
||||
a warning in skb_try_coalesce()
|
||||
|
||||
It turns out iwl3945 has several problems :
|
||||
|
||||
1) skb->truesize is underestimated.
|
||||
We really consume PAGE_SIZE bytes for a fragment,
|
||||
not the frame length.
|
||||
2) 128 bytes of initial headroom is a bit low and forces reallocations.
|
||||
3) We can avoid consuming a full page for small enough frames.
|
||||
|
||||
Reported-by: Steinar H. Gunderson <sesse@google.com>
|
||||
Signed-off-by: Eric Dumazet <edumazet@google.com>
|
||||
Cc: Paul Stewart <pstew@google.com>
|
||||
---
|
||||
v3: use regular memcpy(skb_put(...),...)
|
||||
v2: SMALL_PACKET_SIZE define
|
||||
|
||||
drivers/net/wireless/iwlegacy/3945.c | 31 +++++++++++++++----------
|
||||
1 file changed, 19 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlegacy/3945.c b/drivers/net/wireless/iwlegacy/3945.c
|
||||
index c092033..f09e257 100644
|
||||
--- a/drivers/net/wireless/iwlegacy/3945.c
|
||||
+++ b/drivers/net/wireless/iwlegacy/3945.c
|
||||
@@ -475,6 +475,8 @@ il3945_is_network_packet(struct il_priv *il, struct ieee80211_hdr *header)
|
||||
}
|
||||
}
|
||||
|
||||
+#define SMALL_PACKET_SIZE 256
|
||||
+
|
||||
static void
|
||||
il3945_pass_packet_to_mac80211(struct il_priv *il, struct il_rx_buf *rxb,
|
||||
struct ieee80211_rx_status *stats)
|
||||
@@ -483,14 +485,13 @@ il3945_pass_packet_to_mac80211(struct il_priv *il, struct il_rx_buf *rxb,
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)IL_RX_DATA(pkt);
|
||||
struct il3945_rx_frame_hdr *rx_hdr = IL_RX_HDR(pkt);
|
||||
struct il3945_rx_frame_end *rx_end = IL_RX_END(pkt);
|
||||
- u16 len = le16_to_cpu(rx_hdr->len);
|
||||
+ u32 len = le16_to_cpu(rx_hdr->len);
|
||||
struct sk_buff *skb;
|
||||
__le16 fc = hdr->frame_control;
|
||||
+ u32 fraglen = PAGE_SIZE << il->hw_params.rx_page_order;
|
||||
|
||||
/* We received data from the HW, so stop the watchdog */
|
||||
- if (unlikely
|
||||
- (len + IL39_RX_FRAME_SIZE >
|
||||
- PAGE_SIZE << il->hw_params.rx_page_order)) {
|
||||
+ if (unlikely(len + IL39_RX_FRAME_SIZE > fraglen)) {
|
||||
D_DROP("Corruption detected!\n");
|
||||
return;
|
||||
}
|
||||
@@ -506,26 +507,32 @@ il3945_pass_packet_to_mac80211(struct il_priv *il, struct il_rx_buf *rxb,
|
||||
D_INFO("Woke queues - frame received on passive channel\n");
|
||||
}
|
||||
|
||||
- skb = dev_alloc_skb(128);
|
||||
+ skb = dev_alloc_skb(SMALL_PACKET_SIZE);
|
||||
if (!skb) {
|
||||
IL_ERR("dev_alloc_skb failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!il3945_mod_params.sw_crypto)
|
||||
- il_set_decrypted_flag(il, (struct ieee80211_hdr *)rxb_addr(rxb),
|
||||
+ il_set_decrypted_flag(il, (struct ieee80211_hdr *)pkt,
|
||||
le32_to_cpu(rx_end->status), stats);
|
||||
|
||||
- skb_add_rx_frag(skb, 0, rxb->page,
|
||||
- (void *)rx_hdr->payload - (void *)pkt, len,
|
||||
- len);
|
||||
-
|
||||
+ /* If frame is small enough to fit into skb->head, copy it
|
||||
+ * and do not consume a full page
|
||||
+ */
|
||||
+ if (len <= SMALL_PACKET_SIZE) {
|
||||
+ memcpy(skb_put(skb, len), rx_hdr->payload, len);
|
||||
+ } else {
|
||||
+ skb_add_rx_frag(skb, 0, rxb->page,
|
||||
+ (void *)rx_hdr->payload - (void *)pkt, len,
|
||||
+ fraglen);
|
||||
+ il->alloc_rxb_page--;
|
||||
+ rxb->page = NULL;
|
||||
+ }
|
||||
il_update_stats(il, false, fc, len);
|
||||
memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats));
|
||||
|
||||
ieee80211_rx(il->hw, skb);
|
||||
- il->alloc_rxb_page--;
|
||||
- rxb->page = NULL;
|
||||
}
|
||||
|
||||
#define IL_DELAY_NEXT_SCAN_AFTER_ASSOC (HZ*6)
|
||||
|
||||
|
@ -1,65 +0,0 @@
|
||||
4965 version of Eric patch "iwl3945: better skb management in rx path".
|
||||
It fixes several problems :
|
||||
|
||||
1) skb->truesize is underestimated.
|
||||
We really consume PAGE_SIZE bytes for a fragment,
|
||||
not the frame length.
|
||||
2) 128 bytes of initial headroom is a bit low and forces reallocations.
|
||||
3) We can avoid consuming a full page for small enough frames.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/iwlegacy/4965-mac.c | 18 ++++++++++++------
|
||||
1 file changed, 12 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c
|
||||
index d287fd2..4e5d408 100644
|
||||
--- a/drivers/net/wireless/iwlegacy/4965-mac.c
|
||||
+++ b/drivers/net/wireless/iwlegacy/4965-mac.c
|
||||
@@ -574,9 +574,11 @@ il4965_translate_rx_status(struct il_priv *il, u32 decrypt_in)
|
||||
return decrypt_out;
|
||||
}
|
||||
|
||||
+#define SMALL_PACKET_SIZE 256
|
||||
+
|
||||
static void
|
||||
il4965_pass_packet_to_mac80211(struct il_priv *il, struct ieee80211_hdr *hdr,
|
||||
- u16 len, u32 ampdu_status, struct il_rx_buf *rxb,
|
||||
+ u32 len, u32 ampdu_status, struct il_rx_buf *rxb,
|
||||
struct ieee80211_rx_status *stats)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
@@ -598,21 +600,25 @@ il4965_pass_packet_to_mac80211(struct il_priv *il, struct ieee80211_hdr *hdr,
|
||||
il_set_decrypted_flag(il, hdr, ampdu_status, stats))
|
||||
return;
|
||||
|
||||
- skb = dev_alloc_skb(128);
|
||||
+ skb = dev_alloc_skb(SMALL_PACKET_SIZE);
|
||||
if (!skb) {
|
||||
IL_ERR("dev_alloc_skb failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
- skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), len,
|
||||
- len);
|
||||
+ if (len <= SMALL_PACKET_SIZE) {
|
||||
+ memcpy(skb_put(skb, len), hdr, len);
|
||||
+ } else {
|
||||
+ skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb),
|
||||
+ len, PAGE_SIZE << il->hw_params.rx_page_order);
|
||||
+ il->alloc_rxb_page--;
|
||||
+ rxb->page = NULL;
|
||||
+ }
|
||||
|
||||
il_update_stats(il, false, fc, len);
|
||||
memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats));
|
||||
|
||||
ieee80211_rx(il->hw, skb);
|
||||
- il->alloc_rxb_page--;
|
||||
- rxb->page = NULL;
|
||||
}
|
||||
|
||||
/* Called for N_RX (legacy ABG frames), or
|
||||
--
|
||||
1.7.11.7
|
||||
|
@ -1,98 +0,0 @@
|
||||
From f6b129527ca15bae29ffb9417ddaa1c9d99ffc5d Mon Sep 17 00:00:00 2001
|
||||
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Date: Tue, 15 Oct 2013 19:04:54 +0000
|
||||
Subject: iwlwifi: dvm: don't override mac80211's queue setting
|
||||
|
||||
Since we set IEEE80211_HW_QUEUE_CONTROL, we can let
|
||||
mac80211 do the queue assignement and don't need to
|
||||
override its decisions.
|
||||
While reassiging the same values is harmless of course,
|
||||
it triggered a WARNING when iwlwifi and mac80211 came
|
||||
to different conclusions. This happened when mac80211 set
|
||||
IEEE80211_TX_CTL_SEND_AFTER_DTIM, but didn't route the
|
||||
packet to the cab_queue because no stations were asleep.
|
||||
|
||||
iwlwifi should not override mac80211's decicions for
|
||||
offchannel packets and packets to be sent after DTIM,
|
||||
but it should override mac80211's decision for AMPDUs
|
||||
since we have a special queue for them. So for AMPDU,
|
||||
we still override info->hw_queue by the AMPDU queue.
|
||||
|
||||
This avoids:
|
||||
------------[ cut here ]------------
|
||||
WARNING: CPU: 0 PID: 2531 at drivers/net/wireless/iwlwifi/dvm/tx.c:456 iwlagn_tx_skb+0x6c5/0x883()
|
||||
Modules linked in:
|
||||
CPU: 0 PID: 2531 Comm: hostapd Not tainted 3.12.0-rc5+ #1
|
||||
Hardware name: /D53427RKE, BIOS RKPPT10H.86A.0017.2013.0425.1251 04/25/2013
|
||||
0000000000000000 0000000000000009 ffffffff8189aa62 0000000000000000
|
||||
ffffffff8105a4f2 ffff880058339a48 ffffffff815f8a04 0000000000000000
|
||||
ffff8800560097b0 0000000000000208 0000000000000000 ffff8800561a9e5e
|
||||
Call Trace:
|
||||
[<ffffffff8189aa62>] ? dump_stack+0x41/0x51
|
||||
[<ffffffff8105a4f2>] ? warn_slowpath_common+0x78/0x90
|
||||
[<ffffffff815f8a04>] ? iwlagn_tx_skb+0x6c5/0x883
|
||||
[<ffffffff815f8a04>] ? iwlagn_tx_skb+0x6c5/0x883
|
||||
[<ffffffff818a0040>] ? put_cred+0x15/0x15
|
||||
[<ffffffff815f6db4>] ? iwlagn_mac_tx+0x19/0x2f
|
||||
[<ffffffff8186cc45>] ? __ieee80211_tx+0x226/0x29b
|
||||
[<ffffffff8186e6bd>] ? ieee80211_tx+0xa6/0xb5
|
||||
[<ffffffff8186e98b>] ? ieee80211_monitor_start_xmit+0x1e9/0x204
|
||||
[<ffffffff8171ce5f>] ? dev_hard_start_xmit+0x271/0x3ec
|
||||
[<ffffffff817351ac>] ? sch_direct_xmit+0x66/0x164
|
||||
[<ffffffff8171d1bf>] ? dev_queue_xmit+0x1e5/0x3c8
|
||||
[<ffffffff817fac5a>] ? packet_sendmsg+0xac5/0xb3d
|
||||
[<ffffffff81709a09>] ? sock_sendmsg+0x37/0x52
|
||||
[<ffffffff810f9e0c>] ? __do_fault+0x338/0x36b
|
||||
[<ffffffff81713820>] ? verify_iovec+0x44/0x94
|
||||
[<ffffffff81709e63>] ? ___sys_sendmsg+0x1f1/0x283
|
||||
[<ffffffff81140a73>] ? __inode_wait_for_writeback+0x67/0xae
|
||||
[<ffffffff8111735e>] ? __cache_free.isra.46+0x178/0x187
|
||||
[<ffffffff811173b1>] ? kmem_cache_free+0x44/0x84
|
||||
[<ffffffff81132c22>] ? dentry_kill+0x13d/0x149
|
||||
[<ffffffff81132f6f>] ? dput+0xe5/0xef
|
||||
[<ffffffff81136e04>] ? fget_light+0x2e/0x7c
|
||||
[<ffffffff8170ae62>] ? __sys_sendmsg+0x39/0x57
|
||||
[<ffffffff818a7e39>] ? system_call_fastpath+0x16/0x1b
|
||||
---[ end trace 1b3eb79359c1d1e6 ]---
|
||||
|
||||
Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
|
||||
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
diff --git a/drivers/net/wireless/iwlwifi/dvm/tx.c b/drivers/net/wireless/iwlwifi/dvm/tx.c
|
||||
index da442b8..1fef524 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/dvm/tx.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/dvm/tx.c
|
||||
@@ -433,27 +433,19 @@ int iwlagn_tx_skb(struct iwl_priv *priv,
|
||||
/* Copy MAC header from skb into command buffer */
|
||||
memcpy(tx_cmd->hdr, hdr, hdr_len);
|
||||
|
||||
+ txq_id = info->hw_queue;
|
||||
+
|
||||
if (is_agg)
|
||||
txq_id = priv->tid_data[sta_id][tid].agg.txq_id;
|
||||
else if (info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM) {
|
||||
/*
|
||||
- * Send this frame after DTIM -- there's a special queue
|
||||
- * reserved for this for contexts that support AP mode.
|
||||
- */
|
||||
- txq_id = ctx->mcast_queue;
|
||||
-
|
||||
- /*
|
||||
* The microcode will clear the more data
|
||||
* bit in the last frame it transmits.
|
||||
*/
|
||||
hdr->frame_control |=
|
||||
cpu_to_le16(IEEE80211_FCTL_MOREDATA);
|
||||
- } else if (info->flags & IEEE80211_TX_CTL_TX_OFFCHAN)
|
||||
- txq_id = IWL_AUX_QUEUE;
|
||||
- else
|
||||
- txq_id = ctx->ac_to_queue[skb_get_queue_mapping(skb)];
|
||||
+ }
|
||||
|
||||
- WARN_ON_ONCE(!is_agg && txq_id != info->hw_queue);
|
||||
WARN_ON_ONCE(is_agg &&
|
||||
priv->queue_to_mac80211[txq_id] != info->hw_queue);
|
||||
|
||||
--
|
||||
cgit v0.9.2
|
248
kernel.spec
248
kernel.spec
@ -62,19 +62,19 @@ Summary: The Linux kernel
|
||||
# For non-released -rc kernels, this will be appended after the rcX and
|
||||
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
|
||||
#
|
||||
%global baserelease 301
|
||||
%global baserelease 300
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# base_sublevel is the kernel version we're starting with and patching
|
||||
# on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base,
|
||||
# which yields a base_sublevel of 0.
|
||||
%define base_sublevel 11
|
||||
%define base_sublevel 12
|
||||
|
||||
## If this is a released kernel ##
|
||||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 10
|
||||
%define stable_update 5
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
@ -493,13 +493,13 @@ ExclusiveOS: Linux
|
||||
#
|
||||
# List the packages used during the kernel build
|
||||
#
|
||||
BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar
|
||||
BuildRequires: bzip2, xz, findutils, gzip, m4, perl, perl-Carp, make >= 3.78, diffutils, gawk
|
||||
BuildRequires: gcc >= 3.4.2, binutils >= 2.12, redhat-rpm-config, hmaccalc
|
||||
BuildRequires: kmod, patch, bash, sh-utils, tar
|
||||
BuildRequires: bzip2, xz, findutils, gzip, m4, perl, perl-Carp, make, diffutils, gawk
|
||||
BuildRequires: gcc, binutils, redhat-rpm-config, hmaccalc
|
||||
BuildRequires: net-tools, hostname, bc
|
||||
BuildRequires: xmlto, asciidoc
|
||||
%if %{with_sparse}
|
||||
BuildRequires: sparse >= 0.4.1
|
||||
BuildRequires: sparse
|
||||
%endif
|
||||
%if %{with_perf}
|
||||
BuildRequires: elfutils-devel zlib-devel binutils-devel newt-devel python-devel perl(ExtUtils::Embed) bison
|
||||
@ -510,11 +510,7 @@ BuildRequires: pciutils-devel gettext
|
||||
%endif
|
||||
BuildConflicts: rhbuildsys(DiskFree) < 500Mb
|
||||
%if %{with_debuginfo}
|
||||
# Fancy new debuginfo generation introduced in Fedora 8/RHEL 6.
|
||||
# The -r flag to find-debuginfo.sh invokes eu-strip --reloc-debug-sections
|
||||
# which reduces the number of relocations in kernel module .ko.debug files and
|
||||
# was introduced with rpm 4.9 and elfutils 0.153.
|
||||
BuildRequires: rpm-build >= 4.9.0-1, elfutils >= elfutils-0.153-1
|
||||
BuildRequires: rpm-build, elfutils
|
||||
%define debuginfo_args --strict-build-id -r
|
||||
%endif
|
||||
|
||||
@ -543,6 +539,7 @@ Source20: Makefile.config
|
||||
Source21: config-debug
|
||||
Source22: config-nodebug
|
||||
Source23: config-generic
|
||||
Source24: config-no-extra
|
||||
|
||||
Source30: config-x86-generic
|
||||
Source31: config-i686-PAE
|
||||
@ -624,15 +621,6 @@ Patch09: upstream-reverts.patch
|
||||
|
||||
# Standalone patches
|
||||
|
||||
#drop with next rebase
|
||||
Patch100: taint-vbox.patch
|
||||
|
||||
#drop with next rebase
|
||||
Patch110: vmbugon-warnon.patch
|
||||
|
||||
#drop with next rebase
|
||||
Patch201: debug-bad-pte-modules.patch
|
||||
|
||||
Patch390: defaults-acpi-video.patch
|
||||
Patch396: acpi-sony-nonvs-blacklist.patch
|
||||
|
||||
@ -646,6 +634,8 @@ Patch470: die-floppy-die.patch
|
||||
Patch510: silence-noise.patch
|
||||
Patch530: silence-fbcon-logo.patch
|
||||
|
||||
Patch600: x86-allow-1024-cpus.patch
|
||||
|
||||
Patch800: crash-driver.patch
|
||||
|
||||
# crypto/
|
||||
@ -668,19 +658,12 @@ Patch1003: sysrq-secure-boot.patch
|
||||
|
||||
# nouveau + drm fixes
|
||||
# intel drm is all merged upstream
|
||||
Patch1824: drm-intel-next.patch
|
||||
Patch1825: drm-i915-dp-stfu.patch
|
||||
Patch1826: drm-i915-hush-check-crtc-state.patch
|
||||
|
||||
# Quiet boot fixes
|
||||
# silence the ACPI blacklist code
|
||||
Patch2802: silence-acpi-blacklist.patch
|
||||
|
||||
# media patches
|
||||
Patch2899: v4l-dvb-fixes.patch
|
||||
Patch2900: v4l-dvb-update.patch
|
||||
Patch2901: v4l-dvb-experimental.patch
|
||||
|
||||
# fs fixes
|
||||
|
||||
# NFSv4
|
||||
@ -703,8 +686,6 @@ Patch15000: nowatchdog-on-virt.patch
|
||||
# lpae
|
||||
Patch21001: arm-lpae-ax88796.patch
|
||||
Patch21004: arm-sound-soc-samsung-dma-avoid-another-64bit-division.patch
|
||||
Patch21005: arm-exynos-mp.patch
|
||||
Patch21006: arm-highbank-for-3.12.patch
|
||||
|
||||
# ARM omap
|
||||
Patch21010: arm-omap-load-tfp410.patch
|
||||
@ -712,12 +693,17 @@ Patch21010: arm-omap-load-tfp410.patch
|
||||
# ARM tegra
|
||||
Patch21020: arm-tegra-usb-no-reset-linux33.patch
|
||||
|
||||
# ARM wandboard
|
||||
Patch21030: arm-wandboard-quad.patch
|
||||
# https://git.kernel.org/cgit/linux/kernel/git/broonie/sound.git/patch/?id=3f1a91aa25579ba5e7268a47a73d2a83e4802c62
|
||||
# ARM i.MX6
|
||||
# http://www.spinics.net/lists/devicetree/msg08276.html
|
||||
Patch21025: arm-imx6-utilite.patch
|
||||
|
||||
# AM33xx
|
||||
Patch21100: am335x-bone.patch
|
||||
# am33xx (BeagleBone)
|
||||
# https://github.com/beagleboard/kernel
|
||||
# Pulled primarily from the above git repo. First patch is all in arm-soc
|
||||
# scheduled for 3.13. The others should be landing via other trees
|
||||
Patch21030: arm-am33xx-arm-soc-upstream.patch
|
||||
Patch21031: arm-am33xx-bblack.patch
|
||||
Patch21032: arm-am33xx-cpsw.patch
|
||||
|
||||
#rhbz 754518
|
||||
Patch21235: scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
|
||||
@ -730,42 +716,9 @@ Patch21247: ath9k_rx_dma_stop_check.patch
|
||||
|
||||
Patch22000: weird-root-dentry-name-debug.patch
|
||||
|
||||
#rhbz 927469
|
||||
Patch23006: fix-child-thread-introspection.patch
|
||||
|
||||
Patch25047: drm-radeon-Disable-writeback-by-default-on-ppc.patch
|
||||
|
||||
#rhbz 977040
|
||||
Patch25056: iwl3945-better-skb-management-in-rx-path.patch
|
||||
Patch25057: iwl4965-better-skb-management-in-rx-path.patch
|
||||
|
||||
#rhbz 963715
|
||||
Patch25077: media-cx23885-Fix-TeVii-S471-regression-since-introduction-of-ts2020.patch
|
||||
|
||||
#rhbz 985522
|
||||
Patch25107: ntp-Make-periodic-RTC-update-more-reliable.patch
|
||||
|
||||
#rhbz 971893
|
||||
Patch25109: bonding-driver-alb-learning.patch
|
||||
|
||||
#rhbz 902012
|
||||
Patch25114: elevator-Fix-a-race-in-elevator-switching-and-md.patch
|
||||
Patch25115: elevator-acquire-q-sysfs_lock-in-elevator_change.patch
|
||||
|
||||
#rhbz 974072
|
||||
Patch25117: rt2800-add-support-for-rf3070.patch
|
||||
|
||||
#rhbz 1015989
|
||||
Patch25122: netfilter-nf_conntrack-use-RCU-safe-kfree-for-conntr.patch
|
||||
|
||||
#rhbz 982153
|
||||
Patch25123: iommu-Remove-stack-trace-from-broken-irq-remapping-warning.patch
|
||||
|
||||
#rhbz 998732
|
||||
Patch25125: vfio-iommu-Fixed-interaction-of-VFIO_IOMMU_MAP_DMA.patch
|
||||
|
||||
#rhbz 896695
|
||||
Patch25126: 0001-iwlwifi-don-t-WARN-on-host-commands-sent-when-firmwa.patch
|
||||
Patch25127: 0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch
|
||||
|
||||
#rhbz 993744
|
||||
@ -774,43 +727,11 @@ Patch25128: dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch
|
||||
#rhbz 1000439
|
||||
Patch25129: cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
|
||||
|
||||
#rhbz 1010679
|
||||
Patch25130: fix-radeon-sound.patch
|
||||
Patch25149: drm-radeon-24hz-audio-fixes.patch
|
||||
|
||||
#rhbz 984696
|
||||
Patch25132: rt2800usb-slow-down-TX-status-polling.patch
|
||||
|
||||
#rhbz 1023413
|
||||
Patch25135: alps-Support-for-Dell-XT2-model.patch
|
||||
|
||||
#rhbz 1011621
|
||||
Patch25137: cifs-Allow-LANMAN-auth-for-unencapsulated-auth-methods.patch
|
||||
|
||||
#rhbz 1025769
|
||||
Patch25142: iwlwifi-dvm-dont-override-mac80211-queue-setting.patch
|
||||
|
||||
Patch25143: drm-qxl-backport-fixes-for-Fedora.patch
|
||||
Patch25160: drm-qxl-fix-memory-leak-in-release-list-handling.patch
|
||||
|
||||
Patch25144: Input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch
|
||||
|
||||
#CVE-2013-4563 rhbz 1030015 1030017
|
||||
Patch25145: ipv6-fix-headroom-calculation-in-udp6_ufo_fragment.patch
|
||||
|
||||
#rhbz 1015905
|
||||
Patch25146: 0001-ip6_output-fragment-outgoing-reassembled-skb-properl.patch
|
||||
Patch25147: 0002-netfilter-push-reasm-skb-through-instead-of-original.patch
|
||||
Patch25140: drm-qxl-backport-fixes-for-Fedora.patch
|
||||
|
||||
#rhbz 1011362
|
||||
Patch25148: alx-Reset-phy-speed-after-resume.patch
|
||||
|
||||
#rhbz 1031086
|
||||
Patch25150: slab_common-Do-not-check-for-duplicate-slab-names.patch
|
||||
|
||||
#rhbz 967652
|
||||
Patch25151: KVM-x86-fix-emulation-of-movzbl-bpl-eax.patch
|
||||
|
||||
# Fix 15sec NFS mount delay
|
||||
Patch25152: sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch
|
||||
Patch25153: sunrpc-replace-gssd_running-with-more-reliable-check.patch
|
||||
@ -819,22 +740,9 @@ Patch25154: nfs-check-gssd-running-before-krb5i-auth.patch
|
||||
#CVE-2013-6382 rhbz 1033603 1034670
|
||||
Patch25157: xfs-underflow-bug-in-xfs_attrlist_by_handle.patch
|
||||
|
||||
#rhbz 1022733
|
||||
Patch25158: via-velocity-fix-netif_receive_skb-use-in-irq-disable.patch
|
||||
|
||||
#rhbz 998342
|
||||
Patch25159: usbnet-fix-status-interrupt-urb-handling.patch
|
||||
|
||||
#CVE-2013-6405 rhbz 1035875 1035887
|
||||
Patch25161: inet-prevent-leakage-of-uninitialized-memory-to-user.patch
|
||||
Patch25162: inet-fix-addr_len-msg_namelen-assignment-in-recv_error-and-rxpmtu-functions.patch
|
||||
|
||||
#rhbz 958826
|
||||
Patch25164: dell-laptop.patch
|
||||
|
||||
#CVE-2013-XXXX rhbz 1039845 1039874
|
||||
Patch25165: net-rework-recvmsg-handler-msg_name-and-msg_namelen-.patch
|
||||
|
||||
#rhbz 1030802
|
||||
Patch25170: Input-elantech-add-support-for-newer-August-2013-dev.patch
|
||||
Patch25171: elantech-Properly-differentiate-between-clickpads-an.patch
|
||||
@ -1391,17 +1299,9 @@ ApplyOptionalPatch compile-fixes.patch
|
||||
# revert patches from upstream that conflict or that we get via other means
|
||||
ApplyOptionalPatch upstream-reverts.patch -R
|
||||
|
||||
#drop with next rebase
|
||||
ApplyPatch taint-vbox.patch
|
||||
|
||||
#drop with next rebase
|
||||
ApplyPatch vmbugon-warnon.patch
|
||||
|
||||
#drop with next rebase
|
||||
ApplyPatch debug-bad-pte-modules.patch
|
||||
|
||||
# Architecture patches
|
||||
# x86(-64)
|
||||
ApplyPatch x86-allow-1024-cpus.patch
|
||||
|
||||
# ARM64
|
||||
|
||||
@ -1410,14 +1310,13 @@ ApplyPatch debug-bad-pte-modules.patch
|
||||
#
|
||||
ApplyPatch arm-lpae-ax88796.patch
|
||||
ApplyPatch arm-sound-soc-samsung-dma-avoid-another-64bit-division.patch
|
||||
ApplyPatch arm-exynos-mp.patch
|
||||
ApplyPatch arm-highbank-for-3.12.patch
|
||||
ApplyPatch arm-omap-load-tfp410.patch
|
||||
ApplyPatch arm-tegra-usb-no-reset-linux33.patch
|
||||
ApplyPatch arm-wandboard-quad.patch
|
||||
ApplyPatch arm-imx6-utilite.patch
|
||||
|
||||
# Fix OMAP and AM33xx (BeagleBone)
|
||||
ApplyPatch am335x-bone.patch
|
||||
ApplyPatch arm-am33xx-arm-soc-upstream.patch
|
||||
ApplyPatch arm-am33xx-bblack.patch
|
||||
ApplyPatch arm-am33xx-cpsw.patch
|
||||
|
||||
#
|
||||
# bugfixes to drivers and filesystems
|
||||
@ -1500,21 +1399,13 @@ ApplyPatch sysrq-secure-boot.patch
|
||||
# Nouveau DRM
|
||||
|
||||
# Intel DRM
|
||||
ApplyOptionalPatch drm-intel-next.patch
|
||||
ApplyPatch drm-i915-dp-stfu.patch
|
||||
ApplyPatch drm-i915-hush-check-crtc-state.patch
|
||||
|
||||
# Radeon DRM
|
||||
|
||||
# silence the ACPI blacklist code
|
||||
ApplyPatch silence-acpi-blacklist.patch
|
||||
|
||||
# V4L/DVB updates/fixes/experimental drivers
|
||||
# apply if non-empty
|
||||
ApplyOptionalPatch v4l-dvb-fixes.patch
|
||||
ApplyOptionalPatch v4l-dvb-update.patch
|
||||
ApplyOptionalPatch v4l-dvb-experimental.patch
|
||||
|
||||
# Patches headed upstream
|
||||
ApplyPatch fs-proc-devtree-remove_proc_entry.patch
|
||||
|
||||
@ -1531,7 +1422,7 @@ ApplyPatch nowatchdog-on-virt.patch
|
||||
#rhbz 754518
|
||||
ApplyPatch scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
|
||||
|
||||
ApplyPatch weird-root-dentry-name-debug.patch
|
||||
#pplyPatch weird-root-dentry-name-debug.patch
|
||||
|
||||
# https://fedoraproject.org/wiki/Features/Checkpoint_Restore
|
||||
ApplyPatch criu-no-expert.patch
|
||||
@ -1539,42 +1430,9 @@ ApplyPatch criu-no-expert.patch
|
||||
#rhbz 892811
|
||||
ApplyPatch ath9k_rx_dma_stop_check.patch
|
||||
|
||||
#rhbz 927469
|
||||
ApplyPatch fix-child-thread-introspection.patch
|
||||
|
||||
ApplyPatch drm-radeon-Disable-writeback-by-default-on-ppc.patch
|
||||
|
||||
#rhbz 977040
|
||||
ApplyPatch iwl3945-better-skb-management-in-rx-path.patch
|
||||
ApplyPatch iwl4965-better-skb-management-in-rx-path.patch
|
||||
|
||||
#rhbz 963715
|
||||
ApplyPatch media-cx23885-Fix-TeVii-S471-regression-since-introduction-of-ts2020.patch
|
||||
|
||||
#rhbz 985522
|
||||
ApplyPatch ntp-Make-periodic-RTC-update-more-reliable.patch
|
||||
|
||||
#rhbz 971893
|
||||
ApplyPatch bonding-driver-alb-learning.patch
|
||||
|
||||
#rhbz 902012
|
||||
ApplyPatch elevator-Fix-a-race-in-elevator-switching-and-md.patch
|
||||
ApplyPatch elevator-acquire-q-sysfs_lock-in-elevator_change.patch
|
||||
|
||||
#rhbz 974072
|
||||
ApplyPatch rt2800-add-support-for-rf3070.patch
|
||||
|
||||
#rhbz 1015989
|
||||
ApplyPatch netfilter-nf_conntrack-use-RCU-safe-kfree-for-conntr.patch
|
||||
|
||||
#rhbz 982153
|
||||
ApplyPatch iommu-Remove-stack-trace-from-broken-irq-remapping-warning.patch
|
||||
|
||||
#rhbz 998732
|
||||
ApplyPatch vfio-iommu-Fixed-interaction-of-VFIO_IOMMU_MAP_DMA.patch
|
||||
|
||||
#rhbz 896695
|
||||
ApplyPatch 0001-iwlwifi-don-t-WARN-on-host-commands-sent-when-firmwa.patch
|
||||
ApplyPatch 0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch
|
||||
|
||||
#rhbz 993744
|
||||
@ -1583,43 +1441,11 @@ ApplyPatch dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch
|
||||
#rhbz 1000439
|
||||
ApplyPatch cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
|
||||
|
||||
#rhbz 1010679
|
||||
ApplyPatch fix-radeon-sound.patch
|
||||
ApplyPatch drm-radeon-24hz-audio-fixes.patch
|
||||
|
||||
#rhbz 984696
|
||||
ApplyPatch rt2800usb-slow-down-TX-status-polling.patch
|
||||
|
||||
#rhbz 1023413
|
||||
ApplyPatch alps-Support-for-Dell-XT2-model.patch
|
||||
|
||||
#rhbz 1011621
|
||||
ApplyPatch cifs-Allow-LANMAN-auth-for-unencapsulated-auth-methods.patch
|
||||
|
||||
#rhbz 1025769
|
||||
ApplyPatch iwlwifi-dvm-dont-override-mac80211-queue-setting.patch
|
||||
|
||||
ApplyPatch drm-qxl-backport-fixes-for-Fedora.patch
|
||||
ApplyPatch drm-qxl-fix-memory-leak-in-release-list-handling.patch
|
||||
|
||||
ApplyPatch Input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch
|
||||
|
||||
#CVE-2013-4563 rhbz 1030015 1030017
|
||||
ApplyPatch ipv6-fix-headroom-calculation-in-udp6_ufo_fragment.patch
|
||||
|
||||
#rhbz 1015905
|
||||
ApplyPatch 0001-ip6_output-fragment-outgoing-reassembled-skb-properl.patch
|
||||
ApplyPatch 0002-netfilter-push-reasm-skb-through-instead-of-original.patch
|
||||
|
||||
#rhbz 1011362
|
||||
ApplyPatch alx-Reset-phy-speed-after-resume.patch
|
||||
|
||||
#rhbz 1031086
|
||||
ApplyPatch slab_common-Do-not-check-for-duplicate-slab-names.patch
|
||||
|
||||
#rhbz 967652
|
||||
ApplyPatch KVM-x86-fix-emulation-of-movzbl-bpl-eax.patch
|
||||
|
||||
# Fix 15sec NFS mount delay
|
||||
ApplyPatch sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch
|
||||
ApplyPatch sunrpc-replace-gssd_running-with-more-reliable-check.patch
|
||||
@ -1628,22 +1454,9 @@ ApplyPatch nfs-check-gssd-running-before-krb5i-auth.patch
|
||||
#CVE-2013-6382 rhbz 1033603 1034670
|
||||
ApplyPatch xfs-underflow-bug-in-xfs_attrlist_by_handle.patch
|
||||
|
||||
#rhbz 1022733
|
||||
ApplyPatch via-velocity-fix-netif_receive_skb-use-in-irq-disable.patch
|
||||
|
||||
#rhbz 998342
|
||||
ApplyPatch usbnet-fix-status-interrupt-urb-handling.patch
|
||||
|
||||
#CVE-2013-6405 rhbz 1035875 1035887
|
||||
ApplyPatch inet-prevent-leakage-of-uninitialized-memory-to-user.patch
|
||||
ApplyPatch inet-fix-addr_len-msg_namelen-assignment-in-recv_error-and-rxpmtu-functions.patch
|
||||
|
||||
#rhbz 958826
|
||||
ApplyPatch dell-laptop.patch
|
||||
|
||||
#CVE-2013-XXXX rhbz 1039845 1039874
|
||||
ApplyPatch net-rework-recvmsg-handler-msg_name-and-msg_namelen-.patch
|
||||
|
||||
#rhbz 1030802
|
||||
ApplyPatch Input-elantech-add-support-for-newer-August-2013-dev.patch
|
||||
ApplyPatch elantech-Properly-differentiate-between-clickpads-an.patch
|
||||
@ -2012,7 +1825,7 @@ BuildKernel %make_target %kernel_image smp
|
||||
%endif
|
||||
|
||||
%global perf_make \
|
||||
make -s %{?cross_opts} %{?_smp_mflags} -C tools/perf V=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 NO_STRLCPY=1 prefix=%{_prefix}
|
||||
make -s %{?cross_opts} %{?_smp_mflags} -C tools/perf V=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 NO_STRLCPY=1 NO_BIONIC=1 prefix=%{_prefix}
|
||||
%if %{with_perf}
|
||||
# perf
|
||||
%{perf_make} all
|
||||
@ -2462,6 +2275,9 @@ fi
|
||||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Fri Dec 13 2013 Justin M. Forbes <jforbes@fedoraproject.org - 3.12.5-300
|
||||
- Linux v3.12.5 rebase
|
||||
|
||||
* Thu Dec 12 2013 Josh Boyer <jwboyer@fedoraproject.org>
|
||||
- CVE-2013-4587 kvm: out-of-bounds access (rhbz 1030986 1042071)
|
||||
- CVE-2013-6376 kvm: BUG_ON in apic_cluster_id (rhbz 1033106 1042099)
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 64160c504842a359801cff17464931fa028ff164 Mon Sep 17 00:00:00 2001
|
||||
From d7ccdaa17aab12a49f5e9e327b55167c4af26bf8 Mon Sep 17 00:00:00 2001
|
||||
From: David Howells <dhowells@redhat.com>
|
||||
Date: Fri, 30 Aug 2013 15:37:54 +0100
|
||||
Subject: [PATCH 1/2] KEYS: Implement a big key type that can save to tmpfs
|
||||
@ -308,7 +308,7 @@ index 0000000..5f9defc
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From b1e5b74e060add16de8d6005802644fa1700167f Mon Sep 17 00:00:00 2001
|
||||
From 862e98313b10123fa4352117b0b0c0f5a530cefb Mon Sep 17 00:00:00 2001
|
||||
From: David Howells <dhowells@redhat.com>
|
||||
Date: Fri, 30 Aug 2013 15:37:54 +0100
|
||||
Subject: [PATCH 2/2] KEYS: Add per-user_namespace registers for persistent
|
||||
@ -377,7 +377,7 @@ Tested-by: Simo Sorce <simo@redhat.com>
|
||||
cc: Serge E. Hallyn <serge.hallyn@ubuntu.com>
|
||||
cc: Eric W. Biederman <ebiederm@xmission.com>
|
||||
---
|
||||
include/linux/user_namespace.h | 6 ++
|
||||
include/linux/user_namespace.h | 7 ++
|
||||
include/uapi/linux/keyctl.h | 1 +
|
||||
kernel/user.c | 4 +
|
||||
kernel/user_namespace.c | 6 ++
|
||||
@ -388,23 +388,24 @@ cc: Eric W. Biederman <ebiederm@xmission.com>
|
||||
security/keys/keyctl.c | 3 +
|
||||
security/keys/persistent.c | 169 +++++++++++++++++++++++++++++++++++++++++
|
||||
security/keys/sysctl.c | 11 +++
|
||||
11 files changed, 230 insertions(+)
|
||||
11 files changed, 231 insertions(+)
|
||||
create mode 100644 security/keys/persistent.c
|
||||
|
||||
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
|
||||
index b6b215f..cf21958 100644
|
||||
index 4db2985..bb0639d 100644
|
||||
--- a/include/linux/user_namespace.h
|
||||
+++ b/include/linux/user_namespace.h
|
||||
@@ -28,6 +28,12 @@ struct user_namespace {
|
||||
@@ -27,6 +27,13 @@ struct user_namespace {
|
||||
kuid_t owner;
|
||||
kgid_t group;
|
||||
unsigned int proc_inum;
|
||||
bool may_mount_sysfs;
|
||||
bool may_mount_proc;
|
||||
+
|
||||
+ /* Register of per-UID persistent keyrings for this namespace */
|
||||
+#ifdef CONFIG_PERSISTENT_KEYRINGS
|
||||
+ struct key *persistent_keyring_register;
|
||||
+ struct rw_semaphore persistent_keyring_register_sem;
|
||||
+#endif
|
||||
+
|
||||
};
|
||||
|
||||
extern struct user_namespace init_user_ns;
|
||||
@ -420,13 +421,13 @@ index c9b7f4fa..840cb99 100644
|
||||
|
||||
#endif /* _LINUX_KEYCTL_H */
|
||||
diff --git a/kernel/user.c b/kernel/user.c
|
||||
index 69b4c3d..6c9e1b9 100644
|
||||
index 5bbb919..a3a0dbf 100644
|
||||
--- a/kernel/user.c
|
||||
+++ b/kernel/user.c
|
||||
@@ -53,6 +53,10 @@ struct user_namespace init_user_ns = {
|
||||
@@ -51,6 +51,10 @@ struct user_namespace init_user_ns = {
|
||||
.owner = GLOBAL_ROOT_UID,
|
||||
.group = GLOBAL_ROOT_GID,
|
||||
.proc_inum = PROC_USER_INIT_INO,
|
||||
.may_mount_sysfs = true,
|
||||
.may_mount_proc = true,
|
||||
+#ifdef CONFIG_KEYS_KERBEROS_CACHE
|
||||
+ .krb_cache_register_sem =
|
||||
+ __RWSEM_INITIALIZER(init_user_ns.krb_cache_register_sem),
|
||||
@ -435,12 +436,12 @@ index 69b4c3d..6c9e1b9 100644
|
||||
EXPORT_SYMBOL_GPL(init_user_ns);
|
||||
|
||||
diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
|
||||
index d8c30db..ef7985e 100644
|
||||
index 13fb113..2dbc299 100644
|
||||
--- a/kernel/user_namespace.c
|
||||
+++ b/kernel/user_namespace.c
|
||||
@@ -99,6 +99,9 @@ int create_user_ns(struct cred *new)
|
||||
@@ -101,6 +101,9 @@ int create_user_ns(struct cred *new)
|
||||
|
||||
update_mnt_policy(ns);
|
||||
set_cred_user_ns(new, ns);
|
||||
|
||||
+#ifdef CONFIG_PERSISTENT_KEYRINGS
|
||||
+ rwsem_init(&ns->persistent_keyring_register_sem);
|
||||
@ -448,7 +449,7 @@ index d8c30db..ef7985e 100644
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -123,6 +126,9 @@ void free_user_ns(struct user_namespace *ns)
|
||||
@@ -130,6 +133,9 @@ void free_user_ns(struct user_namespace *ns)
|
||||
|
||||
do {
|
||||
parent = ns->parent;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,30 +0,0 @@
|
||||
From b43ea8068d2090cb1e44632c8a938ab40d2c7419 Mon Sep 17 00:00:00 2001
|
||||
From: Johannes Koch <johannes@ortsraum.de>
|
||||
Date: Wed, 17 Jul 2013 17:28:16 +0000
|
||||
Subject: [media] cx23885: Fix TeVii S471 regression since introduction of ts2020
|
||||
|
||||
Patch to make TeVii S471 cards use the ts2020 tuner, since ds3000 driver no
|
||||
longer contains tuning code.
|
||||
|
||||
Signed-off-by: Johannes Koch <johannes@ortsraum.de>
|
||||
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
|
||||
---
|
||||
(limited to 'drivers/media/pci/cx23885/cx23885-dvb.c')
|
||||
|
||||
diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
|
||||
index 9c5ed10..bb291c6 100644
|
||||
--- a/drivers/media/pci/cx23885/cx23885-dvb.c
|
||||
+++ b/drivers/media/pci/cx23885/cx23885-dvb.c
|
||||
@@ -1249,6 +1249,10 @@ static int dvb_register(struct cx23885_tsport *port)
|
||||
fe0->dvb.frontend = dvb_attach(ds3000_attach,
|
||||
&tevii_ds3000_config,
|
||||
&i2c_bus->i2c_adap);
|
||||
+ if (fe0->dvb.frontend != NULL) {
|
||||
+ dvb_attach(ts2020_attach, fe0->dvb.frontend,
|
||||
+ &tevii_ts2020_config, &i2c_bus->i2c_adap);
|
||||
+ }
|
||||
break;
|
||||
case CX23885_BOARD_PROF_8000:
|
||||
i2c_bus = &dev->i2c_bus[0];
|
||||
--
|
||||
cgit v0.9.2
|
@ -321,8 +321,8 @@ index 564dd93..389b50d 100644
|
||||
+struct key *system_blacklist_keyring;
|
||||
+#endif
|
||||
|
||||
extern __initdata const u8 system_certificate_list[];
|
||||
extern __initdata const u8 system_certificate_list_end[];
|
||||
extern __initconst const u8 system_certificate_list[];
|
||||
extern __initconst const u8 system_certificate_list_end[];
|
||||
@@ -41,6 +44,20 @@ static __init int system_trusted_keyring_init(void)
|
||||
panic("Can't allocate system trusted keyring\n");
|
||||
|
||||
|
@ -1,774 +0,0 @@
|
||||
Bugzilla: 1039874
|
||||
Upstream-status: 3.13 and 3.12.4
|
||||
|
||||
From 9cb9fb275f8794546dc31a79f2f02127fed5baf2 Mon Sep 17 00:00:00 2001
|
||||
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Date: Thu, 21 Nov 2013 03:14:22 +0100
|
||||
Subject: [PATCH] net: rework recvmsg handler msg_name and msg_namelen logic
|
||||
|
||||
[ Upstream commit f3d3342602f8bcbf37d7c46641cb9bca7618eb1c ]
|
||||
|
||||
This patch now always passes msg->msg_namelen as 0. recvmsg handlers must
|
||||
set msg_namelen to the proper size <= sizeof(struct sockaddr_storage)
|
||||
to return msg_name to the user.
|
||||
|
||||
This prevents numerous uninitialized memory leaks we had in the
|
||||
recvmsg handlers and makes it harder for new code to accidentally leak
|
||||
uninitialized memory.
|
||||
|
||||
Optimize for the case recvfrom is called with NULL as address. We don't
|
||||
need to copy the address at all, so set it to NULL before invoking the
|
||||
recvmsg handler. We can do so, because all the recvmsg handlers must
|
||||
cope with the case a plain read() is called on them. read() also sets
|
||||
msg_name to NULL.
|
||||
|
||||
Also document these changes in include/linux/net.h as suggested by David
|
||||
Miller.
|
||||
|
||||
Changes since RFC:
|
||||
|
||||
Set msg->msg_name = NULL if user specified a NULL in msg_name but had a
|
||||
non-null msg_namelen in verify_iovec/verify_compat_iovec. This doesn't
|
||||
affect sendto as it would bail out earlier while trying to copy-in the
|
||||
address. It also more naturally reflects the logic by the callers of
|
||||
verify_iovec.
|
||||
|
||||
With this change in place I could remove "
|
||||
if (!uaddr || msg_sys->msg_namelen == 0)
|
||||
msg->msg_name = NULL
|
||||
".
|
||||
|
||||
This change does not alter the user visible error logic as we ignore
|
||||
msg_namelen as long as msg_name is NULL.
|
||||
|
||||
Also remove two unnecessary curly brackets in ___sys_recvmsg and change
|
||||
comments to netdev style.
|
||||
|
||||
Cc: David Miller <davem@davemloft.net>
|
||||
Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
|
||||
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
crypto/algif_hash.c | 2 --
|
||||
crypto/algif_skcipher.c | 1 -
|
||||
drivers/isdn/mISDN/socket.c | 13 ++++---------
|
||||
drivers/net/ppp/pppoe.c | 2 --
|
||||
include/linux/net.h | 8 ++++++++
|
||||
net/appletalk/ddp.c | 16 +++++++---------
|
||||
net/atm/common.c | 2 --
|
||||
net/ax25/af_ax25.c | 4 ++--
|
||||
net/bluetooth/af_bluetooth.c | 4 ----
|
||||
net/bluetooth/hci_sock.c | 2 --
|
||||
net/bluetooth/rfcomm/sock.c | 1 -
|
||||
net/bluetooth/sco.c | 1 -
|
||||
net/caif/caif_socket.c | 4 ----
|
||||
net/compat.c | 3 ++-
|
||||
net/core/iovec.c | 3 ++-
|
||||
net/ipx/af_ipx.c | 3 +--
|
||||
net/irda/af_irda.c | 4 ----
|
||||
net/iucv/af_iucv.c | 2 --
|
||||
net/key/af_key.c | 1 -
|
||||
net/l2tp/l2tp_ppp.c | 2 --
|
||||
net/llc/af_llc.c | 2 --
|
||||
net/netlink/af_netlink.c | 2 --
|
||||
net/netrom/af_netrom.c | 3 +--
|
||||
net/nfc/llcp_sock.c | 2 --
|
||||
net/nfc/rawsock.c | 2 --
|
||||
net/packet/af_packet.c | 32 +++++++++++++++-----------------
|
||||
net/rds/recv.c | 2 --
|
||||
net/rose/af_rose.c | 8 +++++---
|
||||
net/rxrpc/ar-recvmsg.c | 9 ++++++---
|
||||
net/socket.c | 19 +++++++++++--------
|
||||
net/tipc/socket.c | 6 ------
|
||||
net/unix/af_unix.c | 5 -----
|
||||
net/vmw_vsock/af_vsock.c | 2 --
|
||||
net/vmw_vsock/vmci_transport.c | 2 --
|
||||
net/x25/af_x25.c | 3 +--
|
||||
35 files changed, 65 insertions(+), 112 deletions(-)
|
||||
|
||||
diff --git a/crypto/algif_hash.c b/crypto/algif_hash.c
|
||||
index 0262210..ef5356c 100644
|
||||
--- a/crypto/algif_hash.c
|
||||
+++ b/crypto/algif_hash.c
|
||||
@@ -161,8 +161,6 @@ static int hash_recvmsg(struct kiocb *unused, struct socket *sock,
|
||||
else if (len < ds)
|
||||
msg->msg_flags |= MSG_TRUNC;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
lock_sock(sk);
|
||||
if (ctx->more) {
|
||||
ctx->more = 0;
|
||||
diff --git a/crypto/algif_skcipher.c b/crypto/algif_skcipher.c
|
||||
index a1c4f0a..6a6dfc0 100644
|
||||
--- a/crypto/algif_skcipher.c
|
||||
+++ b/crypto/algif_skcipher.c
|
||||
@@ -432,7 +432,6 @@ static int skcipher_recvmsg(struct kiocb *unused, struct socket *sock,
|
||||
long copied = 0;
|
||||
|
||||
lock_sock(sk);
|
||||
- msg->msg_namelen = 0;
|
||||
for (iov = msg->msg_iov, iovlen = msg->msg_iovlen; iovlen > 0;
|
||||
iovlen--, iov++) {
|
||||
unsigned long seglen = iov->iov_len;
|
||||
diff --git a/drivers/isdn/mISDN/socket.c b/drivers/isdn/mISDN/socket.c
|
||||
index e47dcb9..5cefb47 100644
|
||||
--- a/drivers/isdn/mISDN/socket.c
|
||||
+++ b/drivers/isdn/mISDN/socket.c
|
||||
@@ -117,7 +117,6 @@ mISDN_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
struct sock *sk = sock->sk;
|
||||
- struct sockaddr_mISDN *maddr;
|
||||
|
||||
int copied, err;
|
||||
|
||||
@@ -135,9 +134,9 @@ mISDN_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (!skb)
|
||||
return err;
|
||||
|
||||
- if (msg->msg_namelen >= sizeof(struct sockaddr_mISDN)) {
|
||||
- msg->msg_namelen = sizeof(struct sockaddr_mISDN);
|
||||
- maddr = (struct sockaddr_mISDN *)msg->msg_name;
|
||||
+ if (msg->msg_name) {
|
||||
+ struct sockaddr_mISDN *maddr = msg->msg_name;
|
||||
+
|
||||
maddr->family = AF_ISDN;
|
||||
maddr->dev = _pms(sk)->dev->id;
|
||||
if ((sk->sk_protocol == ISDN_P_LAPD_TE) ||
|
||||
@@ -150,11 +149,7 @@ mISDN_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
maddr->sapi = _pms(sk)->ch.addr & 0xFF;
|
||||
maddr->tei = (_pms(sk)->ch.addr >> 8) & 0xFF;
|
||||
}
|
||||
- } else {
|
||||
- if (msg->msg_namelen)
|
||||
- printk(KERN_WARNING "%s: too small namelen %d\n",
|
||||
- __func__, msg->msg_namelen);
|
||||
- msg->msg_namelen = 0;
|
||||
+ msg->msg_namelen = sizeof(*maddr);
|
||||
}
|
||||
|
||||
copied = skb->len + MISDN_HEADER_LEN;
|
||||
diff --git a/drivers/net/ppp/pppoe.c b/drivers/net/ppp/pppoe.c
|
||||
index 5f66e30..82ee6ed 100644
|
||||
--- a/drivers/net/ppp/pppoe.c
|
||||
+++ b/drivers/net/ppp/pppoe.c
|
||||
@@ -979,8 +979,6 @@ static int pppoe_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (error < 0)
|
||||
goto end;
|
||||
|
||||
- m->msg_namelen = 0;
|
||||
-
|
||||
if (skb) {
|
||||
total_len = min_t(size_t, total_len, skb->len);
|
||||
error = skb_copy_datagram_iovec(skb, 0, m->msg_iov, total_len);
|
||||
diff --git a/include/linux/net.h b/include/linux/net.h
|
||||
index 4f27575..8bd9d92 100644
|
||||
--- a/include/linux/net.h
|
||||
+++ b/include/linux/net.h
|
||||
@@ -163,6 +163,14 @@ struct proto_ops {
|
||||
#endif
|
||||
int (*sendmsg) (struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *m, size_t total_len);
|
||||
+ /* Notes for implementing recvmsg:
|
||||
+ * ===============================
|
||||
+ * msg->msg_namelen should get updated by the recvmsg handlers
|
||||
+ * iff msg_name != NULL. It is by default 0 to prevent
|
||||
+ * returning uninitialized memory to user space. The recvfrom
|
||||
+ * handlers can assume that msg.msg_name is either NULL or has
|
||||
+ * a minimum size of sizeof(struct sockaddr_storage).
|
||||
+ */
|
||||
int (*recvmsg) (struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *m, size_t total_len,
|
||||
int flags);
|
||||
diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c
|
||||
index 7fee50d..7d424ac 100644
|
||||
--- a/net/appletalk/ddp.c
|
||||
+++ b/net/appletalk/ddp.c
|
||||
@@ -1735,7 +1735,6 @@ static int atalk_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr
|
||||
size_t size, int flags)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
- struct sockaddr_at *sat = (struct sockaddr_at *)msg->msg_name;
|
||||
struct ddpehdr *ddp;
|
||||
int copied = 0;
|
||||
int offset = 0;
|
||||
@@ -1764,14 +1763,13 @@ static int atalk_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr
|
||||
}
|
||||
err = skb_copy_datagram_iovec(skb, offset, msg->msg_iov, copied);
|
||||
|
||||
- if (!err) {
|
||||
- if (sat) {
|
||||
- sat->sat_family = AF_APPLETALK;
|
||||
- sat->sat_port = ddp->deh_sport;
|
||||
- sat->sat_addr.s_node = ddp->deh_snode;
|
||||
- sat->sat_addr.s_net = ddp->deh_snet;
|
||||
- }
|
||||
- msg->msg_namelen = sizeof(*sat);
|
||||
+ if (!err && msg->msg_name) {
|
||||
+ struct sockaddr_at *sat = msg->msg_name;
|
||||
+ sat->sat_family = AF_APPLETALK;
|
||||
+ sat->sat_port = ddp->deh_sport;
|
||||
+ sat->sat_addr.s_node = ddp->deh_snode;
|
||||
+ sat->sat_addr.s_net = ddp->deh_snet;
|
||||
+ msg->msg_namelen = sizeof(*sat);
|
||||
}
|
||||
|
||||
skb_free_datagram(sk, skb); /* Free the datagram. */
|
||||
diff --git a/net/atm/common.c b/net/atm/common.c
|
||||
index 737bef5..7b49100 100644
|
||||
--- a/net/atm/common.c
|
||||
+++ b/net/atm/common.c
|
||||
@@ -531,8 +531,6 @@ int vcc_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
|
||||
struct sk_buff *skb;
|
||||
int copied, error = -EINVAL;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
if (sock->state != SS_CONNECTED)
|
||||
return -ENOTCONN;
|
||||
|
||||
diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c
|
||||
index 4b4d2b7..78c474f 100644
|
||||
--- a/net/ax25/af_ax25.c
|
||||
+++ b/net/ax25/af_ax25.c
|
||||
@@ -1636,11 +1636,11 @@ static int ax25_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
|
||||
skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
|
||||
|
||||
- if (msg->msg_namelen != 0) {
|
||||
- struct sockaddr_ax25 *sax = (struct sockaddr_ax25 *)msg->msg_name;
|
||||
+ if (msg->msg_name) {
|
||||
ax25_digi digi;
|
||||
ax25_address src;
|
||||
const unsigned char *mac = skb_mac_header(skb);
|
||||
+ struct sockaddr_ax25 *sax = msg->msg_name;
|
||||
|
||||
memset(sax, 0, sizeof(struct full_sockaddr_ax25));
|
||||
ax25_addr_parse(mac + 1, skb->data - mac - 1, &src, NULL,
|
||||
diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c
|
||||
index 9096137..6629cdc 100644
|
||||
--- a/net/bluetooth/af_bluetooth.c
|
||||
+++ b/net/bluetooth/af_bluetooth.c
|
||||
@@ -221,8 +221,6 @@ int bt_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (flags & (MSG_OOB))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
||||
if (!skb) {
|
||||
if (sk->sk_shutdown & RCV_SHUTDOWN)
|
||||
@@ -287,8 +285,6 @@ int bt_sock_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (flags & MSG_OOB)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
BT_DBG("sk %p size %zu", sk, size);
|
||||
|
||||
lock_sock(sk);
|
||||
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
|
||||
index 9bd7d95..fa4bf66 100644
|
||||
--- a/net/bluetooth/hci_sock.c
|
||||
+++ b/net/bluetooth/hci_sock.c
|
||||
@@ -752,8 +752,6 @@ static int hci_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (!skb)
|
||||
return err;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
copied = skb->len;
|
||||
if (len < copied) {
|
||||
msg->msg_flags |= MSG_TRUNC;
|
||||
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
|
||||
index 30b3721..c1c6028 100644
|
||||
--- a/net/bluetooth/rfcomm/sock.c
|
||||
+++ b/net/bluetooth/rfcomm/sock.c
|
||||
@@ -608,7 +608,6 @@ static int rfcomm_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
|
||||
if (test_and_clear_bit(RFCOMM_DEFER_SETUP, &d->flags)) {
|
||||
rfcomm_dlc_accept(d);
|
||||
- msg->msg_namelen = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
|
||||
index e7bd4ee..2bb1d3a 100644
|
||||
--- a/net/bluetooth/sco.c
|
||||
+++ b/net/bluetooth/sco.c
|
||||
@@ -700,7 +700,6 @@ static int sco_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
|
||||
sco_conn_defer_accept(pi->conn->hcon, 0);
|
||||
sk->sk_state = BT_CONFIG;
|
||||
- msg->msg_namelen = 0;
|
||||
|
||||
release_sock(sk);
|
||||
return 0;
|
||||
diff --git a/net/caif/caif_socket.c b/net/caif/caif_socket.c
|
||||
index 05a41c7..d6be3ed 100644
|
||||
--- a/net/caif/caif_socket.c
|
||||
+++ b/net/caif/caif_socket.c
|
||||
@@ -286,8 +286,6 @@ static int caif_seqpkt_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (m->msg_flags&MSG_OOB)
|
||||
goto read_error;
|
||||
|
||||
- m->msg_namelen = 0;
|
||||
-
|
||||
skb = skb_recv_datagram(sk, flags, 0 , &ret);
|
||||
if (!skb)
|
||||
goto read_error;
|
||||
@@ -361,8 +359,6 @@ static int caif_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (flags&MSG_OOB)
|
||||
goto out;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
/*
|
||||
* Lock the socket to prevent queue disordering
|
||||
* while sleeps in memcpy_tomsg
|
||||
diff --git a/net/compat.c b/net/compat.c
|
||||
index 8903258..618c6a8 100644
|
||||
--- a/net/compat.c
|
||||
+++ b/net/compat.c
|
||||
@@ -93,7 +93,8 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
- kern_msg->msg_name = kern_address;
|
||||
+ if (kern_msg->msg_name)
|
||||
+ kern_msg->msg_name = kern_address;
|
||||
} else
|
||||
kern_msg->msg_name = NULL;
|
||||
|
||||
diff --git a/net/core/iovec.c b/net/core/iovec.c
|
||||
index de178e4..9a31515 100644
|
||||
--- a/net/core/iovec.c
|
||||
+++ b/net/core/iovec.c
|
||||
@@ -48,7 +48,8 @@ int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr_storage *a
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
- m->msg_name = address;
|
||||
+ if (m->msg_name)
|
||||
+ m->msg_name = address;
|
||||
} else {
|
||||
m->msg_name = NULL;
|
||||
}
|
||||
diff --git a/net/ipx/af_ipx.c b/net/ipx/af_ipx.c
|
||||
index 7a1e0fc..e096025 100644
|
||||
--- a/net/ipx/af_ipx.c
|
||||
+++ b/net/ipx/af_ipx.c
|
||||
@@ -1823,8 +1823,6 @@ static int ipx_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (skb->tstamp.tv64)
|
||||
sk->sk_stamp = skb->tstamp;
|
||||
|
||||
- msg->msg_namelen = sizeof(*sipx);
|
||||
-
|
||||
if (sipx) {
|
||||
sipx->sipx_family = AF_IPX;
|
||||
sipx->sipx_port = ipx->ipx_source.sock;
|
||||
@@ -1832,6 +1830,7 @@ static int ipx_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
sipx->sipx_network = IPX_SKB_CB(skb)->ipx_source_net;
|
||||
sipx->sipx_type = ipx->ipx_type;
|
||||
sipx->sipx_zero = 0;
|
||||
+ msg->msg_namelen = sizeof(*sipx);
|
||||
}
|
||||
rc = copied;
|
||||
|
||||
diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c
|
||||
index 0578d4f..a5e62ef5 100644
|
||||
--- a/net/irda/af_irda.c
|
||||
+++ b/net/irda/af_irda.c
|
||||
@@ -1385,8 +1385,6 @@ static int irda_recvmsg_dgram(struct kiocb *iocb, struct socket *sock,
|
||||
|
||||
IRDA_DEBUG(4, "%s()\n", __func__);
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
|
||||
flags & MSG_DONTWAIT, &err);
|
||||
if (!skb)
|
||||
@@ -1451,8 +1449,6 @@ static int irda_recvmsg_stream(struct kiocb *iocb, struct socket *sock,
|
||||
target = sock_rcvlowat(sk, flags & MSG_WAITALL, size);
|
||||
timeo = sock_rcvtimeo(sk, noblock);
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
do {
|
||||
int chunk;
|
||||
struct sk_buff *skb = skb_dequeue(&sk->sk_receive_queue);
|
||||
diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
|
||||
index 168aff5..c4b7218 100644
|
||||
--- a/net/iucv/af_iucv.c
|
||||
+++ b/net/iucv/af_iucv.c
|
||||
@@ -1324,8 +1324,6 @@ static int iucv_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
int err = 0;
|
||||
u32 offset;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
if ((sk->sk_state == IUCV_DISCONN) &&
|
||||
skb_queue_empty(&iucv->backlog_skb_q) &&
|
||||
skb_queue_empty(&sk->sk_receive_queue) &&
|
||||
diff --git a/net/key/af_key.c b/net/key/af_key.c
|
||||
index ab8bd2c..66f51c5 100644
|
||||
--- a/net/key/af_key.c
|
||||
+++ b/net/key/af_key.c
|
||||
@@ -3623,7 +3623,6 @@ static int pfkey_recvmsg(struct kiocb *kiocb,
|
||||
if (flags & ~(MSG_PEEK|MSG_DONTWAIT|MSG_TRUNC|MSG_CMSG_COMPAT))
|
||||
goto out;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &err);
|
||||
if (skb == NULL)
|
||||
goto out;
|
||||
diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
|
||||
index 8c46b27..44441c0 100644
|
||||
--- a/net/l2tp/l2tp_ppp.c
|
||||
+++ b/net/l2tp/l2tp_ppp.c
|
||||
@@ -197,8 +197,6 @@ static int pppol2tp_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (sk->sk_state & PPPOX_BOUND)
|
||||
goto end;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
err = 0;
|
||||
skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
|
||||
flags & MSG_DONTWAIT, &err);
|
||||
diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c
|
||||
index 48aaa89..8870988 100644
|
||||
--- a/net/llc/af_llc.c
|
||||
+++ b/net/llc/af_llc.c
|
||||
@@ -720,8 +720,6 @@ static int llc_ui_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
int target; /* Read at least this many bytes */
|
||||
long timeo;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
lock_sock(sk);
|
||||
copied = -ENOTCONN;
|
||||
if (unlikely(sk->sk_type == SOCK_STREAM && sk->sk_state == TCP_LISTEN))
|
||||
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
|
||||
index 0c61b59..90b654b 100644
|
||||
--- a/net/netlink/af_netlink.c
|
||||
+++ b/net/netlink/af_netlink.c
|
||||
@@ -2317,8 +2317,6 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
|
||||
}
|
||||
#endif
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
copied = data_skb->len;
|
||||
if (len < copied) {
|
||||
msg->msg_flags |= MSG_TRUNC;
|
||||
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
|
||||
index 698814b..53c19a3 100644
|
||||
--- a/net/netrom/af_netrom.c
|
||||
+++ b/net/netrom/af_netrom.c
|
||||
@@ -1179,10 +1179,9 @@ static int nr_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
sax->sax25_family = AF_NETROM;
|
||||
skb_copy_from_linear_data_offset(skb, 7, sax->sax25_call.ax25_call,
|
||||
AX25_ADDR_LEN);
|
||||
+ msg->msg_namelen = sizeof(*sax);
|
||||
}
|
||||
|
||||
- msg->msg_namelen = sizeof(*sax);
|
||||
-
|
||||
skb_free_datagram(sk, skb);
|
||||
|
||||
release_sock(sk);
|
||||
diff --git a/net/nfc/llcp_sock.c b/net/nfc/llcp_sock.c
|
||||
index d308402..824c605 100644
|
||||
--- a/net/nfc/llcp_sock.c
|
||||
+++ b/net/nfc/llcp_sock.c
|
||||
@@ -807,8 +807,6 @@ static int llcp_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
|
||||
pr_debug("%p %zu\n", sk, len);
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
lock_sock(sk);
|
||||
|
||||
if (sk->sk_state == LLCP_CLOSED &&
|
||||
diff --git a/net/nfc/rawsock.c b/net/nfc/rawsock.c
|
||||
index 313bf1b..5d11f4a 100644
|
||||
--- a/net/nfc/rawsock.c
|
||||
+++ b/net/nfc/rawsock.c
|
||||
@@ -241,8 +241,6 @@ static int rawsock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (!skb)
|
||||
return rc;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
copied = skb->len;
|
||||
if (len < copied) {
|
||||
msg->msg_flags |= MSG_TRUNC;
|
||||
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
|
||||
index 75c8bbf..739c50d 100644
|
||||
--- a/net/packet/af_packet.c
|
||||
+++ b/net/packet/af_packet.c
|
||||
@@ -2694,7 +2694,6 @@ static int packet_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
struct sock *sk = sock->sk;
|
||||
struct sk_buff *skb;
|
||||
int copied, err;
|
||||
- struct sockaddr_ll *sll;
|
||||
int vnet_hdr_len = 0;
|
||||
|
||||
err = -EINVAL;
|
||||
@@ -2777,22 +2776,10 @@ static int packet_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * If the address length field is there to be filled in, we fill
|
||||
- * it in now.
|
||||
- */
|
||||
-
|
||||
- sll = &PACKET_SKB_CB(skb)->sa.ll;
|
||||
- if (sock->type == SOCK_PACKET)
|
||||
- msg->msg_namelen = sizeof(struct sockaddr_pkt);
|
||||
- else
|
||||
- msg->msg_namelen = sll->sll_halen + offsetof(struct sockaddr_ll, sll_addr);
|
||||
-
|
||||
- /*
|
||||
- * You lose any data beyond the buffer you gave. If it worries a
|
||||
- * user program they can ask the device for its MTU anyway.
|
||||
+ /* You lose any data beyond the buffer you gave. If it worries
|
||||
+ * a user program they can ask the device for its MTU
|
||||
+ * anyway.
|
||||
*/
|
||||
-
|
||||
copied = skb->len;
|
||||
if (copied > len) {
|
||||
copied = len;
|
||||
@@ -2805,9 +2792,20 @@ static int packet_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
|
||||
sock_recv_ts_and_drops(msg, sk, skb);
|
||||
|
||||
- if (msg->msg_name)
|
||||
+ if (msg->msg_name) {
|
||||
+ /* If the address length field is there to be filled
|
||||
+ * in, we fill it in now.
|
||||
+ */
|
||||
+ if (sock->type == SOCK_PACKET) {
|
||||
+ msg->msg_namelen = sizeof(struct sockaddr_pkt);
|
||||
+ } else {
|
||||
+ struct sockaddr_ll *sll = &PACKET_SKB_CB(skb)->sa.ll;
|
||||
+ msg->msg_namelen = sll->sll_halen +
|
||||
+ offsetof(struct sockaddr_ll, sll_addr);
|
||||
+ }
|
||||
memcpy(msg->msg_name, &PACKET_SKB_CB(skb)->sa,
|
||||
msg->msg_namelen);
|
||||
+ }
|
||||
|
||||
if (pkt_sk(sk)->auxdata) {
|
||||
struct tpacket_auxdata aux;
|
||||
diff --git a/net/rds/recv.c b/net/rds/recv.c
|
||||
index 9f0f17c..de339b2 100644
|
||||
--- a/net/rds/recv.c
|
||||
+++ b/net/rds/recv.c
|
||||
@@ -410,8 +410,6 @@ int rds_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
|
||||
|
||||
rdsdebug("size %zu flags 0x%x timeo %ld\n", size, msg_flags, timeo);
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
if (msg_flags & MSG_OOB)
|
||||
goto out;
|
||||
|
||||
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c
|
||||
index e98fcfb..33af772 100644
|
||||
--- a/net/rose/af_rose.c
|
||||
+++ b/net/rose/af_rose.c
|
||||
@@ -1216,7 +1216,6 @@ static int rose_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct rose_sock *rose = rose_sk(sk);
|
||||
- struct sockaddr_rose *srose = (struct sockaddr_rose *)msg->msg_name;
|
||||
size_t copied;
|
||||
unsigned char *asmptr;
|
||||
struct sk_buff *skb;
|
||||
@@ -1252,8 +1251,11 @@ static int rose_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
|
||||
skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
|
||||
|
||||
- if (srose != NULL) {
|
||||
- memset(srose, 0, msg->msg_namelen);
|
||||
+ if (msg->msg_name) {
|
||||
+ struct sockaddr_rose *srose;
|
||||
+
|
||||
+ memset(msg->msg_name, 0, sizeof(struct full_sockaddr_rose));
|
||||
+ srose = msg->msg_name;
|
||||
srose->srose_family = AF_ROSE;
|
||||
srose->srose_addr = rose->dest_addr;
|
||||
srose->srose_call = rose->dest_call;
|
||||
diff --git a/net/rxrpc/ar-recvmsg.c b/net/rxrpc/ar-recvmsg.c
|
||||
index 4b48687..898492a 100644
|
||||
--- a/net/rxrpc/ar-recvmsg.c
|
||||
+++ b/net/rxrpc/ar-recvmsg.c
|
||||
@@ -143,10 +143,13 @@ int rxrpc_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
|
||||
/* copy the peer address and timestamp */
|
||||
if (!continue_call) {
|
||||
- if (msg->msg_name && msg->msg_namelen > 0)
|
||||
+ if (msg->msg_name) {
|
||||
+ size_t len =
|
||||
+ sizeof(call->conn->trans->peer->srx);
|
||||
memcpy(msg->msg_name,
|
||||
- &call->conn->trans->peer->srx,
|
||||
- sizeof(call->conn->trans->peer->srx));
|
||||
+ &call->conn->trans->peer->srx, len);
|
||||
+ msg->msg_namelen = len;
|
||||
+ }
|
||||
sock_recv_ts_and_drops(msg, &rx->sk, skb);
|
||||
}
|
||||
|
||||
diff --git a/net/socket.c b/net/socket.c
|
||||
index 4b94643..5158ff7 100644
|
||||
--- a/net/socket.c
|
||||
+++ b/net/socket.c
|
||||
@@ -1849,8 +1849,10 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
|
||||
msg.msg_iov = &iov;
|
||||
iov.iov_len = size;
|
||||
iov.iov_base = ubuf;
|
||||
- msg.msg_name = (struct sockaddr *)&address;
|
||||
- msg.msg_namelen = sizeof(address);
|
||||
+ /* Save some cycles and don't copy the address if not needed */
|
||||
+ msg.msg_name = addr ? (struct sockaddr *)&address : NULL;
|
||||
+ /* We assume all kernel code knows the size of sockaddr_storage */
|
||||
+ msg.msg_namelen = 0;
|
||||
if (sock->file->f_flags & O_NONBLOCK)
|
||||
flags |= MSG_DONTWAIT;
|
||||
err = sock_recvmsg(sock, &msg, size, flags);
|
||||
@@ -2230,16 +2232,14 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
|
||||
goto out;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * Save the user-mode address (verify_iovec will change the
|
||||
- * kernel msghdr to use the kernel address space)
|
||||
+ /* Save the user-mode address (verify_iovec will change the
|
||||
+ * kernel msghdr to use the kernel address space)
|
||||
*/
|
||||
-
|
||||
uaddr = (__force void __user *)msg_sys->msg_name;
|
||||
uaddr_len = COMPAT_NAMELEN(msg);
|
||||
- if (MSG_CMSG_COMPAT & flags) {
|
||||
+ if (MSG_CMSG_COMPAT & flags)
|
||||
err = verify_compat_iovec(msg_sys, iov, &addr, VERIFY_WRITE);
|
||||
- } else
|
||||
+ else
|
||||
err = verify_iovec(msg_sys, iov, &addr, VERIFY_WRITE);
|
||||
if (err < 0)
|
||||
goto out_freeiov;
|
||||
@@ -2248,6 +2248,9 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
|
||||
cmsg_ptr = (unsigned long)msg_sys->msg_control;
|
||||
msg_sys->msg_flags = flags & (MSG_CMSG_CLOEXEC|MSG_CMSG_COMPAT);
|
||||
|
||||
+ /* We assume all kernel code knows the size of sockaddr_storage */
|
||||
+ msg_sys->msg_namelen = 0;
|
||||
+
|
||||
if (sock->file->f_flags & O_NONBLOCK)
|
||||
flags |= MSG_DONTWAIT;
|
||||
err = (nosec ? sock_recvmsg_nosec : sock_recvmsg)(sock, msg_sys,
|
||||
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
|
||||
index 6cc7ddd..dffdbea 100644
|
||||
--- a/net/tipc/socket.c
|
||||
+++ b/net/tipc/socket.c
|
||||
@@ -984,9 +984,6 @@ static int recv_msg(struct kiocb *iocb, struct socket *sock,
|
||||
goto exit;
|
||||
}
|
||||
|
||||
- /* will be updated in set_orig_addr() if needed */
|
||||
- m->msg_namelen = 0;
|
||||
-
|
||||
timeout = sock_rcvtimeo(sk, flags & MSG_DONTWAIT);
|
||||
restart:
|
||||
|
||||
@@ -1095,9 +1092,6 @@ static int recv_stream(struct kiocb *iocb, struct socket *sock,
|
||||
goto exit;
|
||||
}
|
||||
|
||||
- /* will be updated in set_orig_addr() if needed */
|
||||
- m->msg_namelen = 0;
|
||||
-
|
||||
target = sock_rcvlowat(sk, flags & MSG_WAITALL, buf_len);
|
||||
timeout = sock_rcvtimeo(sk, flags & MSG_DONTWAIT);
|
||||
|
||||
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
|
||||
index e64bbcf..6c66e8d 100644
|
||||
--- a/net/unix/af_unix.c
|
||||
+++ b/net/unix/af_unix.c
|
||||
@@ -1762,7 +1762,6 @@ static void unix_copy_addr(struct msghdr *msg, struct sock *sk)
|
||||
{
|
||||
struct unix_sock *u = unix_sk(sk);
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
if (u->addr) {
|
||||
msg->msg_namelen = u->addr->len;
|
||||
memcpy(msg->msg_name, u->addr->name, u->addr->len);
|
||||
@@ -1786,8 +1785,6 @@ static int unix_dgram_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (flags&MSG_OOB)
|
||||
goto out;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
err = mutex_lock_interruptible(&u->readlock);
|
||||
if (err) {
|
||||
err = sock_intr_errno(sock_rcvtimeo(sk, noblock));
|
||||
@@ -1927,8 +1924,6 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
target = sock_rcvlowat(sk, flags&MSG_WAITALL, size);
|
||||
timeo = sock_rcvtimeo(sk, flags&MSG_DONTWAIT);
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
/* Lock the socket to prevent queue disordering
|
||||
* while sleeps in memcpy_tomsg
|
||||
*/
|
||||
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
|
||||
index 4d93346..16f721c 100644
|
||||
--- a/net/vmw_vsock/af_vsock.c
|
||||
+++ b/net/vmw_vsock/af_vsock.c
|
||||
@@ -1663,8 +1663,6 @@ vsock_stream_recvmsg(struct kiocb *kiocb,
|
||||
vsk = vsock_sk(sk);
|
||||
err = 0;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
lock_sock(sk);
|
||||
|
||||
if (sk->sk_state != SS_CONNECTED) {
|
||||
diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
|
||||
index ffc11df..73ca104 100644
|
||||
--- a/net/vmw_vsock/vmci_transport.c
|
||||
+++ b/net/vmw_vsock/vmci_transport.c
|
||||
@@ -1746,8 +1746,6 @@ static int vmci_transport_dgram_dequeue(struct kiocb *kiocb,
|
||||
if (flags & MSG_OOB || flags & MSG_ERRQUEUE)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
- msg->msg_namelen = 0;
|
||||
-
|
||||
/* Retrieve the head sk_buff from the socket's receive queue. */
|
||||
err = 0;
|
||||
skb = skb_recv_datagram(&vsk->sk, flags, noblock, &err);
|
||||
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
|
||||
index 45a3ab5..7622789 100644
|
||||
--- a/net/x25/af_x25.c
|
||||
+++ b/net/x25/af_x25.c
|
||||
@@ -1340,10 +1340,9 @@ static int x25_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
if (sx25) {
|
||||
sx25->sx25_family = AF_X25;
|
||||
sx25->sx25_addr = x25->dest_addr;
|
||||
+ msg->msg_namelen = sizeof(*sx25);
|
||||
}
|
||||
|
||||
- msg->msg_namelen = sizeof(struct sockaddr_x25);
|
||||
-
|
||||
x25_check_rbuf(sk);
|
||||
rc = copied;
|
||||
out_free_dgram:
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,35 +0,0 @@
|
||||
From c13a84a830a208fb3443628773c8ca0557773cc7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michal=20Kube=C4=8Dek?= <mkubecek@suse.cz>
|
||||
Date: Wed, 11 Sep 2013 10:17:27 +0200
|
||||
Subject: [PATCH] netfilter: nf_conntrack: use RCU safe kfree for conntrack
|
||||
extensions
|
||||
|
||||
Commit 68b80f11 (netfilter: nf_nat: fix RCU races) introduced
|
||||
RCU protection for freeing extension data when reallocation
|
||||
moves them to a new location. We need the same protection when
|
||||
freeing them in nf_ct_ext_free() in order to prevent a
|
||||
use-after-free by other threads referencing a NAT extension data
|
||||
via bysource list.
|
||||
|
||||
Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
|
||||
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
---
|
||||
include/net/netfilter/nf_conntrack_extend.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h
|
||||
index ff95434..88a1d40 100644
|
||||
--- a/include/net/netfilter/nf_conntrack_extend.h
|
||||
+++ b/include/net/netfilter/nf_conntrack_extend.h
|
||||
@@ -86,7 +86,7 @@ static inline void nf_ct_ext_destroy(struct nf_conn *ct)
|
||||
static inline void nf_ct_ext_free(struct nf_conn *ct)
|
||||
{
|
||||
if (ct->ext)
|
||||
- kfree(ct->ext);
|
||||
+ kfree_rcu(ct->ext, rcu);
|
||||
}
|
||||
|
||||
/* Add this type, returns pointer to data or NULL. */
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,44 +0,0 @@
|
||||
From a97ad0c4b447a132a322cedc3a5f7fa4cab4b304 Mon Sep 17 00:00:00 2001
|
||||
From: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Date: Thu, 1 Aug 2013 19:31:35 +0200
|
||||
Subject: [PATCH] ntp: Make periodic RTC update more reliable
|
||||
|
||||
The current code requires that the scheduled update of the RTC happens
|
||||
in the closest tick to the half of the second. This seems to be
|
||||
difficult to achieve reliably. The scheduled work may be missing the
|
||||
target time by a tick or two and be constantly rescheduled every second.
|
||||
|
||||
Relax the limit to 10 ticks. As a typical RTC drifts in the 11-minute
|
||||
update interval by several milliseconds, this shouldn't affect the
|
||||
overall accuracy of the RTC much.
|
||||
|
||||
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Signed-off-by: John Stultz <john.stultz@linaro.org>
|
||||
---
|
||||
kernel/time/ntp.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
|
||||
index 8f5b3b9..ab1fa7c 100644
|
||||
--- a/kernel/time/ntp.c
|
||||
+++ b/kernel/time/ntp.c
|
||||
@@ -475,6 +475,7 @@ static void sync_cmos_clock(struct work_struct *work)
|
||||
* called as close as possible to 500 ms before the new second starts.
|
||||
* This code is run on a timer. If the clock is set, that timer
|
||||
* may not expire at the correct time. Thus, we adjust...
|
||||
+ * We want the clock to be within a couple of ticks from the target.
|
||||
*/
|
||||
if (!ntp_synced()) {
|
||||
/*
|
||||
@@ -485,7 +486,7 @@ static void sync_cmos_clock(struct work_struct *work)
|
||||
}
|
||||
|
||||
getnstimeofday(&now);
|
||||
- if (abs(now.tv_nsec - (NSEC_PER_SEC / 2)) <= tick_nsec / 2) {
|
||||
+ if (abs(now.tv_nsec - (NSEC_PER_SEC / 2)) <= tick_nsec * 5) {
|
||||
struct timespec adjust = now;
|
||||
|
||||
fail = -ENODEV;
|
||||
--
|
||||
1.7.9.5
|
||||
|
@ -1,80 +0,0 @@
|
||||
diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
index d78c495..2132830 100644
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
@@ -65,6 +65,7 @@
|
||||
#define RF3021 0x0007
|
||||
#define RF3022 0x0008
|
||||
#define RF3052 0x0009
|
||||
+#define RF3070 0x3070
|
||||
#define RF2853 0x000a
|
||||
#define RF3320 0x000b
|
||||
#define RF3322 0x000c
|
||||
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
index 1b41c8e..2958265 100644
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
@@ -2597,6 +2597,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
||||
case RF3322:
|
||||
rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
|
||||
break;
|
||||
+ case RF3070:
|
||||
case RF5360:
|
||||
case RF5370:
|
||||
case RF5372:
|
||||
@@ -2611,7 +2612,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
||||
rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info);
|
||||
}
|
||||
|
||||
- if (rt2x00_rf(rt2x00dev, RF3290) ||
|
||||
+ if (rt2x00_rf(rt2x00dev, RF3070) ||
|
||||
+ rt2x00_rf(rt2x00dev, RF3290) ||
|
||||
rt2x00_rf(rt2x00dev, RF3322) ||
|
||||
rt2x00_rf(rt2x00dev, RF5360) ||
|
||||
rt2x00_rf(rt2x00dev, RF5370) ||
|
||||
@@ -3219,6 +3221,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
|
||||
rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1);
|
||||
rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
|
||||
break;
|
||||
+ case RF3070:
|
||||
case RF3290:
|
||||
case RF5360:
|
||||
case RF5370:
|
||||
@@ -5731,6 +5734,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
|
||||
case RF3021:
|
||||
case RF3022:
|
||||
case RF3052:
|
||||
+ case RF3070:
|
||||
case RF3290:
|
||||
case RF3320:
|
||||
case RF3322:
|
||||
@@ -6186,6 +6190,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
||||
rt2x00_rf(rt2x00dev, RF2020) ||
|
||||
rt2x00_rf(rt2x00dev, RF3021) ||
|
||||
rt2x00_rf(rt2x00dev, RF3022) ||
|
||||
+ rt2x00_rf(rt2x00dev, RF3070) ||
|
||||
rt2x00_rf(rt2x00dev, RF3290) ||
|
||||
rt2x00_rf(rt2x00dev, RF3320) ||
|
||||
rt2x00_rf(rt2x00dev, RF3322) ||
|
||||
@@ -6219,10 +6224,11 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
||||
/*
|
||||
* Initialize HT information.
|
||||
*/
|
||||
- if (!rt2x00_rf(rt2x00dev, RF2020))
|
||||
+ if (!rt2x00_rf(rt2x00dev, RF2020)) {
|
||||
spec->ht.ht_supported = true;
|
||||
- else
|
||||
+ } else {
|
||||
spec->ht.ht_supported = false;
|
||||
+ }
|
||||
|
||||
spec->ht.cap =
|
||||
IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
|
||||
@@ -6290,6 +6296,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
||||
case RF3022:
|
||||
case RF3320:
|
||||
case RF3052:
|
||||
+ case RF3070:
|
||||
case RF3290:
|
||||
case RF5360:
|
||||
case RF5370:
|
@ -1,53 +0,0 @@
|
||||
Polling TX statuses too frequently has two negative effects. First is
|
||||
randomly peek CPU usage, causing overall system functioning delays.
|
||||
Second bad effect is that device is not able to fill TX statuses in
|
||||
H/W register on some workloads and we get lot of timeouts like below:
|
||||
|
||||
ieee80211 phy4: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 7 in queue 2
|
||||
ieee80211 phy4: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 7 in queue 2
|
||||
ieee80211 phy4: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping
|
||||
|
||||
This not only cause flood of messages in dmesg, but also bad throughput,
|
||||
since rate scaling algorithm can not work optimally.
|
||||
|
||||
In the future, we should probably make polling interval be adjusted
|
||||
automatically, but for now just increase values, this make mentioned
|
||||
problems gone.
|
||||
|
||||
Resolve:
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=62781
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800usb.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
|
||||
index 96677ce5..e095e61 100644
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
|
||||
@@ -176,8 +176,8 @@ static bool rt2800usb_tx_sta_fifo_read_completed(struct rt2x00_dev *rt2x00dev,
|
||||
queue_work(rt2x00dev->workqueue, &rt2x00dev->txdone_work);
|
||||
|
||||
if (rt2800usb_txstatus_pending(rt2x00dev)) {
|
||||
- /* Read register after 250 us */
|
||||
- hrtimer_start(&rt2x00dev->txstatus_timer, ktime_set(0, 250000),
|
||||
+ /* Read register after 1 ms */
|
||||
+ hrtimer_start(&rt2x00dev->txstatus_timer, ktime_set(0, 1000000),
|
||||
HRTIMER_MODE_REL);
|
||||
return false;
|
||||
}
|
||||
@@ -202,8 +202,8 @@ static void rt2800usb_async_read_tx_status(struct rt2x00_dev *rt2x00dev)
|
||||
if (test_and_set_bit(TX_STATUS_READING, &rt2x00dev->flags))
|
||||
return;
|
||||
|
||||
- /* Read TX_STA_FIFO register after 500 us */
|
||||
- hrtimer_start(&rt2x00dev->txstatus_timer, ktime_set(0, 500000),
|
||||
+ /* Read TX_STA_FIFO register after 2 ms */
|
||||
+ hrtimer_start(&rt2x00dev->txstatus_timer, ktime_set(0, 2000000),
|
||||
HRTIMER_MODE_REL);
|
||||
}
|
||||
|
||||
--
|
||||
1.8.3.1
|
@ -7,27 +7,19 @@ Some systems, such as EFI-based Apple systems, won't necessarily have an
|
||||
i8042 to initialize. We shouldn't be printing an error message in this
|
||||
case, since not detecting the chip is the correct behavior.
|
||||
---
|
||||
drivers/input/serio/i8042.c | 4 +---
|
||||
1 files changed, 1 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
|
||||
index 170f71e..4f3e632 100644
|
||||
index 52c9ebf..c374a96 100644
|
||||
--- a/drivers/input/serio/i8042.c
|
||||
+++ b/drivers/input/serio/i8042.c
|
||||
@@ -701,10 +701,8 @@ static int __devinit i8042_check_aux(void)
|
||||
|
||||
@@ -855,7 +855,6 @@ static int __init i8042_check_aux(void)
|
||||
static int i8042_controller_check(void)
|
||||
{
|
||||
- if (i8042_flush() == I8042_BUFFER_SIZE) {
|
||||
if (i8042_flush()) {
|
||||
- pr_err("No controller found\n");
|
||||
+ if (i8042_flush() == I8042_BUFFER_SIZE)
|
||||
return -ENODEV;
|
||||
- }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
1.6.0.1
|
||||
|
||||
Socket fuzzers like sfuzz will trigger this printk a lot, even though it's
|
||||
ratelimited. It isn't particularly useful, so just remove it.
|
||||
|
@ -1,71 +0,0 @@
|
||||
Bugzilla: 1031086
|
||||
Upstream-status: 3.12
|
||||
|
||||
From cd8fa0170867ce6e6e2d7edba1dc1a0b87485854 Mon Sep 17 00:00:00 2001
|
||||
From: Christoph Lameter <cl@linux.com>
|
||||
Date: Sat, 21 Sep 2013 21:56:34 +0000
|
||||
Subject: [PATCH] slab_common: Do not check for duplicate slab names
|
||||
|
||||
SLUB can alias multiple slab kmem_create_requests to one slab cache to save
|
||||
memory and increase the cache hotness. As a result the name of the slab can be
|
||||
stale. Only check the name for duplicates if we are in debug mode where we do
|
||||
not merge multiple caches.
|
||||
|
||||
This fixes the following problem reported by Jonathan Brassow:
|
||||
|
||||
The problem with kmem_cache* is this:
|
||||
|
||||
*) Assume CONFIG_SLUB is set
|
||||
1) kmem_cache_create(name="foo-a")
|
||||
- creates new kmem_cache structure
|
||||
2) kmem_cache_create(name="foo-b")
|
||||
- If identical cache characteristics, it will be merged with the previously
|
||||
created cache associated with "foo-a". The cache's refcount will be
|
||||
incremented and an alias will be created via sysfs_slab_alias().
|
||||
3) kmem_cache_destroy(<ptr>)
|
||||
- Attempting to destroy cache associated with "foo-a", but instead the
|
||||
refcount is simply decremented. I don't even think the sysfs aliases are
|
||||
ever removed...
|
||||
4) kmem_cache_create(name="foo-a")
|
||||
- This FAILS because kmem_cache_sanity_check colides with the existing
|
||||
name ("foo-a") associated with the non-removed cache.
|
||||
|
||||
This is a problem for RAID (specifically dm-raid) because the name used
|
||||
for the kmem_cache_create is ("raid%d-%p", level, mddev). If the cache
|
||||
persists for long enough, the memory address of an old mddev will be
|
||||
reused for a new mddev - causing an identical formulation of the cache
|
||||
name. Even though kmem_cache_destory had long ago been used to delete
|
||||
the old cache, the merging of caches has cause the name and cache of that
|
||||
old instance to be preserved and causes a colision (and thus failure) in
|
||||
kmem_cache_create(). I see this regularly in my testing.
|
||||
|
||||
Reported-by: Jonathan Brassow <jbrassow@redhat.com>
|
||||
Signed-off-by: Christoph Lameter <cl@linux.com>
|
||||
Signed-off-by: Pekka Enberg <penberg@kernel.org>
|
||||
---
|
||||
mm/slab_common.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/mm/slab_common.c b/mm/slab_common.c
|
||||
index 538bade..d434771 100644
|
||||
--- a/mm/slab_common.c
|
||||
+++ b/mm/slab_common.c
|
||||
@@ -55,6 +55,7 @@ static int kmem_cache_sanity_check(struct mem_cgroup *memcg, const char *name,
|
||||
continue;
|
||||
}
|
||||
|
||||
+#if !defined(CONFIG_SLUB) || !defined(CONFIG_SLUB_DEBUG_ON)
|
||||
/*
|
||||
* For simplicity, we won't check this in the list of memcg
|
||||
* caches. We have control over memcg naming, and if there
|
||||
@@ -68,6 +69,7 @@ static int kmem_cache_sanity_check(struct mem_cgroup *memcg, const char *name,
|
||||
s = NULL;
|
||||
return -EINVAL;
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
WARN_ON(strchr(name, ' ')); /* It confuses parsers */
|
||||
--
|
||||
1.8.3.1
|
||||
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
||||
fea363551ff45fbe4cb88497b863b261 linux-3.11.tar.xz
|
||||
c918da07cf5ad4240945ae56c4de3bc0 patch-3.11.10.xz
|
||||
cc6ee608854e0da4b64f6c1ff8b6398c linux-3.12.tar.xz
|
||||
70e456d21f7e7c0dc2f9bd170f1ae4ee patch-3.12.5.xz
|
||||
|
@ -14,16 +14,19 @@ extraneous newline from the message.
|
||||
Signed-off-by: Jeff Layton <jlayton@redhat.com>
|
||||
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
---
|
||||
Fixed up to apply to 3.12.1 by Josh Boyer <jwboyer@fedoraproject.org>
|
||||
|
||||
include/linux/sunrpc/rpc_pipe_fs.h | 2 ++
|
||||
net/sunrpc/auth_gss/auth_gss.c | 17 +++++++----------
|
||||
net/sunrpc/netns.h | 2 --
|
||||
net/sunrpc/rpc_pipe.c | 14 ++++++++++----
|
||||
4 files changed, 19 insertions(+), 16 deletions(-)
|
||||
|
||||
diff -up linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h.orig linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h
|
||||
--- linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h.orig 2013-11-21 10:11:17.893026000 -0500
|
||||
+++ linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h 2013-11-21 10:14:17.709348000 -0500
|
||||
@@ -94,5 +94,7 @@ extern int rpc_unlink(struct dentry *);
|
||||
diff --git a/include/linux/sunrpc/rpc_pipe_fs.h b/include/linux/sunrpc/rpc_pipe_fs.h
|
||||
index 85f1342..7f490be 100644
|
||||
--- a/include/linux/sunrpc/rpc_pipe_fs.h
|
||||
+++ b/include/linux/sunrpc/rpc_pipe_fs.h
|
||||
@@ -131,5 +131,7 @@ extern int rpc_unlink(struct dentry *);
|
||||
extern int register_rpc_pipefs(void);
|
||||
extern void unregister_rpc_pipefs(void);
|
||||
|
||||
@ -31,10 +34,11 @@ diff -up linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h.orig li
|
||||
+
|
||||
#endif
|
||||
#endif
|
||||
diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/auth_gss/auth_gss.c.orig linux-3.11.9-200.fc19.x86_64/net/sunrpc/auth_gss/auth_gss.c
|
||||
--- linux-3.11.9-200.fc19.x86_64/net/sunrpc/auth_gss/auth_gss.c.orig 2013-09-02 16:46:10.000000000 -0400
|
||||
+++ linux-3.11.9-200.fc19.x86_64/net/sunrpc/auth_gss/auth_gss.c 2013-11-21 10:18:33.681923000 -0500
|
||||
@@ -507,8 +507,7 @@ static void warn_gssd(void)
|
||||
diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
|
||||
index 0846566..1ada878 100644
|
||||
--- a/net/sunrpc/auth_gss/auth_gss.c
|
||||
+++ b/net/sunrpc/auth_gss/auth_gss.c
|
||||
@@ -517,8 +517,7 @@ static void warn_gssd(void)
|
||||
unsigned long now = jiffies;
|
||||
|
||||
if (time_after(now, ratelimit)) {
|
||||
@ -44,7 +48,7 @@ diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/auth_gss/auth_gss.c.orig linux-
|
||||
ratelimit = now + 15*HZ;
|
||||
}
|
||||
}
|
||||
@@ -571,7 +570,6 @@ gss_create_upcall(struct gss_auth *gss_a
|
||||
@@ -581,7 +580,6 @@ gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred)
|
||||
struct rpc_pipe *pipe;
|
||||
struct rpc_cred *cred = &gss_cred->gc_base;
|
||||
struct gss_upcall_msg *gss_msg;
|
||||
@ -52,7 +56,7 @@ diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/auth_gss/auth_gss.c.orig linux-
|
||||
DEFINE_WAIT(wait);
|
||||
int err;
|
||||
|
||||
@@ -579,17 +577,16 @@ gss_create_upcall(struct gss_auth *gss_a
|
||||
@@ -589,17 +587,16 @@ gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred)
|
||||
__func__, from_kuid(&init_user_ns, cred->cr_uid));
|
||||
retry:
|
||||
err = 0;
|
||||
@ -65,7 +69,7 @@ diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/auth_gss/auth_gss.c.orig linux-
|
||||
+ warn_gssd();
|
||||
+ return -EACCES;
|
||||
+ }
|
||||
gss_msg = gss_setup_upcall(gss_auth->client, gss_auth, cred);
|
||||
gss_msg = gss_setup_upcall(gss_auth, cred);
|
||||
if (PTR_ERR(gss_msg) == -EAGAIN) {
|
||||
err = wait_event_interruptible_timeout(pipe_version_waitqueue,
|
||||
- sn->pipe_version >= 0, timeout);
|
||||
@ -76,9 +80,10 @@ diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/auth_gss/auth_gss.c.orig linux-
|
||||
warn_gssd();
|
||||
err = -EACCES;
|
||||
}
|
||||
diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h.orig linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h
|
||||
--- linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h.orig 2013-11-21 10:11:17.897029000 -0500
|
||||
+++ linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h 2013-11-21 10:14:17.722351000 -0500
|
||||
diff --git a/net/sunrpc/netns.h b/net/sunrpc/netns.h
|
||||
index 8a8e841..94e506f 100644
|
||||
--- a/net/sunrpc/netns.h
|
||||
+++ b/net/sunrpc/netns.h
|
||||
@@ -33,8 +33,6 @@ struct sunrpc_net {
|
||||
int pipe_version;
|
||||
atomic_t pipe_users;
|
||||
@ -88,9 +93,10 @@ diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h.orig linux-3.11.9-200.f
|
||||
};
|
||||
|
||||
extern int sunrpc_net_id;
|
||||
diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c.orig linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c
|
||||
--- linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c.orig 2013-11-21 10:11:17.903026000 -0500
|
||||
+++ linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c 2013-11-21 10:14:17.727348000 -0500
|
||||
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
|
||||
index 40aef18..ad444f3 100644
|
||||
--- a/net/sunrpc/rpc_pipe.c
|
||||
+++ b/net/sunrpc/rpc_pipe.c
|
||||
@@ -216,14 +216,11 @@ rpc_destroy_inode(struct inode *inode)
|
||||
static int
|
||||
rpc_pipe_open(struct inode *inode, struct file *filp)
|
||||
@ -106,7 +112,7 @@ diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c.orig linux-3.11.9-20
|
||||
pipe = RPC_I(inode)->pipe;
|
||||
if (pipe == NULL)
|
||||
goto out;
|
||||
@@ -1082,7 +1079,6 @@ int rpc_pipefs_init_net(struct net *net)
|
||||
@@ -1231,7 +1228,6 @@ int rpc_pipefs_init_net(struct net *net)
|
||||
return PTR_ERR(sn->gssd_dummy);
|
||||
|
||||
mutex_init(&sn->pipefs_sb_lock);
|
||||
@ -114,7 +120,7 @@ diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c.orig linux-3.11.9-20
|
||||
sn->pipe_version = -1;
|
||||
return 0;
|
||||
}
|
||||
@@ -1236,6 +1232,16 @@ err_depopulate:
|
||||
@@ -1385,6 +1381,16 @@ err_depopulate:
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -131,4 +137,3 @@ diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c.orig linux-3.11.9-20
|
||||
static struct dentry *
|
||||
rpc_mount(struct file_system_type *fs_type,
|
||||
int flags, const char *dev_name, void *data)
|
||||
|
||||
|
@ -1,15 +0,0 @@
|
||||
diff --git a/kernel/module.c b/kernel/module.c
|
||||
index 921bed4..382414e 100644
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -2873,6 +2873,10 @@ static int check_module_license_and_versions(struct module *mod)
|
||||
if (strcmp(mod->name, "ndiswrapper") == 0)
|
||||
add_taint(TAINT_PROPRIETARY_MODULE, LOCKDEP_NOW_UNRELIABLE);
|
||||
|
||||
+ /* vbox is garbage. */
|
||||
+ if (strcmp(mod->name, "vboxdrv") == 0)
|
||||
+ add_taint(TAINT_CRAP, LOCKDEP_NOW_UNRELIABLE);
|
||||
+
|
||||
/* driverloader was caught wrongly pretending to be under GPL */
|
||||
if (strcmp(mod->name, "driverloader") == 0)
|
||||
add_taint_module(mod, TAINT_PROPRIETARY_MODULE,
|
@ -1,37 +0,0 @@
|
||||
From 52f48d0d9aaa621ffa5e08d79da99a3f8c93b848 Mon Sep 17 00:00:00 2001
|
||||
From: Felix Fietkau <nbd@openwrt.org>
|
||||
Date: Tue, 12 Nov 2013 16:34:41 +0100
|
||||
Subject: [PATCH] usbnet: fix status interrupt urb handling
|
||||
|
||||
Since commit 7b0c5f21f348a66de495868b8df0284e8dfd6bbf
|
||||
"sierra_net: keep status interrupt URB active", sierra_net triggers
|
||||
status interrupt polling before the net_device is opened (in order to
|
||||
properly receive the sync message response).
|
||||
|
||||
To be able to receive further interrupts, the interrupt urb needs to be
|
||||
re-submitted, so this patch removes the bogus check for netif_running().
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
Tested-by: Dan Williams <dcbw@redhat.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/usb/usbnet.c | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
|
||||
index 90a429b..8494bb5 100644
|
||||
--- a/drivers/net/usb/usbnet.c
|
||||
+++ b/drivers/net/usb/usbnet.c
|
||||
@@ -204,9 +204,6 @@ static void intr_complete (struct urb *urb)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (!netif_running (dev->net))
|
||||
- return;
|
||||
-
|
||||
status = usb_submit_urb (urb, GFP_ATOMIC);
|
||||
if (status != 0)
|
||||
netif_err(dev, timer, dev->net,
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,39 +0,0 @@
|
||||
From: Julian Stecklina <jsteckli@os.info.tu-dresden.de>
|
||||
Subject: [PATCH] vfio, iommu: Fixed interaction of VFIO_IOMMU_MAP_DMA with IOMMU address limits
|
||||
|
||||
The BUG_ON in drivers/iommu/intel-iommu.c:785 can be triggered from userspace via
|
||||
VFIO by calling the VFIO_IOMMU_MAP_DMA ioctl on a vfio device with any address
|
||||
beyond the addressing capabilities of the IOMMU. The problem is that the ioctl code
|
||||
calls iommu_iova_to_phys before it calls iommu_map. iommu_map handles the case that
|
||||
it gets addresses beyond the addressing capabilities of its IOMMU.
|
||||
intel_iommu_iova_to_phys does not.
|
||||
|
||||
This patch fixes iommu_iova_to_phys to return NULL for addresses beyond what the
|
||||
IOMMU can handle. This in turn causes the ioctl call to fail in iommu_map and
|
||||
(correctly) return EFAULT to the user with a helpful warning message in the kernel
|
||||
log.
|
||||
|
||||
Signed-off-by: Julian Stecklina <jsteckli@os.inf.tu-dresden.de>
|
||||
---
|
||||
drivers/iommu/intel-iommu.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
|
||||
index eec0d3e..61303db 100644
|
||||
--- a/drivers/iommu/intel-iommu.c
|
||||
+++ b/drivers/iommu/intel-iommu.c
|
||||
@@ -782,7 +782,11 @@ static struct dma_pte *pfn_to_dma_pte(struct dmar_domain *domain,
|
||||
int offset;
|
||||
|
||||
BUG_ON(!domain->pgd);
|
||||
- BUG_ON(addr_width < BITS_PER_LONG && pfn >> addr_width);
|
||||
+
|
||||
+ if (addr_width < BITS_PER_LONG && pfn >> addr_width)
|
||||
+ /* Address beyond IOMMU's addressing capabilities. */
|
||||
+ return NULL;
|
||||
+
|
||||
parent = domain->pgd;
|
||||
|
||||
while (level > 0) {
|
||||
--
|
||||
1.8.3.1
|
@ -1,121 +0,0 @@
|
||||
Bugzilla: 1022733
|
||||
Upstream: Submitted for 3.13 and 3.12.y stable
|
||||
Delivered-To: jwboyer@gmail.com
|
||||
Received: by 10.76.104.107 with SMTP id gd11csp116929oab;
|
||||
Mon, 25 Nov 2013 15:45:36 -0800 (PST)
|
||||
X-Received: by 10.68.254.105 with SMTP id ah9mr20726084pbd.87.1385423136297;
|
||||
Mon, 25 Nov 2013 15:45:36 -0800 (PST)
|
||||
Return-Path: <netdev-owner@vger.kernel.org>
|
||||
Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67])
|
||||
by mx.google.com with ESMTP id am2si28999873pad.96.2013.11.25.15.44.53
|
||||
for <multiple recipients>;
|
||||
Mon, 25 Nov 2013 15:45:36 -0800 (PST)
|
||||
Received-SPF: pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67;
|
||||
Authentication-Results: mx.google.com;
|
||||
spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mail=netdev-owner@vger.kernel.org
|
||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1753536Ab3KYXl6 (ORCPT <rfc822;lnxuff@gmail.com> + 99 others);
|
||||
Mon, 25 Nov 2013 18:41:58 -0500
|
||||
Received: from violet.fr.zoreil.com ([92.243.8.30]:57806 "EHLO
|
||||
violet.fr.zoreil.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S1751913Ab3KYXlz (ORCPT
|
||||
<rfc822;netdev@vger.kernel.org>); Mon, 25 Nov 2013 18:41:55 -0500
|
||||
Received: from violet.fr.zoreil.com (localhost [127.0.0.1])
|
||||
by violet.fr.zoreil.com (8.14.5/8.14.5) with ESMTP id rAPNewrt012676;
|
||||
Tue, 26 Nov 2013 00:40:58 +0100
|
||||
Received: (from romieu@localhost)
|
||||
by violet.fr.zoreil.com (8.14.5/8.14.5/Submit) id rAPNewbX012675;
|
||||
Tue, 26 Nov 2013 00:40:58 +0100
|
||||
Date: Tue, 26 Nov 2013 00:40:58 +0100
|
||||
From: Francois Romieu <romieu@fr.zoreil.com>
|
||||
To: netdev@vger.kernel.org
|
||||
Cc: David Miller <davem@davemloft.net>,
|
||||
"Alex A. Schmidt" <aaschmidt1@gmail.com>,
|
||||
Michele Baldessari <michele@acksyn.org>,
|
||||
Jamie Heilman <jamie@audible.transient.net>,
|
||||
Julia Lawall <Julia.Lawall@lip6.fr>
|
||||
Subject: [PATCH net 1/1] via-velocity: fix netif_receive_skb use in irq
|
||||
disabled section.
|
||||
Message-ID: <20131125234058.GA12566@electric-eye.fr.zoreil.com>
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Disposition: inline
|
||||
X-Organisation: Land of Sunshine Inc.
|
||||
User-Agent: Mutt/1.5.21 (2010-09-15)
|
||||
Sender: netdev-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <netdev.vger.kernel.org>
|
||||
X-Mailing-List: netdev@vger.kernel.org
|
||||
|
||||
2fdac010bdcf10a30711b6924612dfc40daf19b8 ("via-velocity.c: update napi
|
||||
implementation") overlooked an irq disabling spinlock when the Rx part
|
||||
of the NAPI poll handler was converted from netif_rx to netif_receive_skb.
|
||||
|
||||
NAPI Rx processing can be taken out of the locked section with a pair of
|
||||
napi_{disable / enable} since it only races with the MTU change function.
|
||||
|
||||
An heavier rework of the NAPI locking would be able to perform NAPI Tx
|
||||
before Rx where I simply removed one of velocity_tx_srv calls.
|
||||
|
||||
References: https://bugzilla.redhat.com/show_bug.cgi?id=1022733
|
||||
Fixes: 2fdac010bdcf (via-velocity.c: update napi implementation)
|
||||
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
|
||||
Tested-by: Alex A. Schmidt <aaschmidt1@gmail.com>
|
||||
Cc: Jamie Heilman <jamie@audible.transient.net>
|
||||
Cc: Michele Baldessari <michele@acksyn.org>
|
||||
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
|
||||
---
|
||||
|
||||
It is relevant for stable 3.11.x and 3.12.y.
|
||||
|
||||
drivers/net/ethernet/via/via-velocity.c | 11 ++++++-----
|
||||
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/via/via-velocity.c b/drivers/net/ethernet/via/via-velocity.c
|
||||
index d022bf9..ad61d26 100644
|
||||
--- a/drivers/net/ethernet/via/via-velocity.c
|
||||
+++ b/drivers/net/ethernet/via/via-velocity.c
|
||||
@@ -2172,16 +2172,13 @@ static int velocity_poll(struct napi_struct *napi, int budget)
|
||||
unsigned int rx_done;
|
||||
unsigned long flags;
|
||||
|
||||
- spin_lock_irqsave(&vptr->lock, flags);
|
||||
/*
|
||||
* Do rx and tx twice for performance (taken from the VIA
|
||||
* out-of-tree driver).
|
||||
*/
|
||||
- rx_done = velocity_rx_srv(vptr, budget / 2);
|
||||
- velocity_tx_srv(vptr);
|
||||
- rx_done += velocity_rx_srv(vptr, budget - rx_done);
|
||||
+ rx_done = velocity_rx_srv(vptr, budget);
|
||||
+ spin_lock_irqsave(&vptr->lock, flags);
|
||||
velocity_tx_srv(vptr);
|
||||
-
|
||||
/* If budget not fully consumed, exit the polling mode */
|
||||
if (rx_done < budget) {
|
||||
napi_complete(napi);
|
||||
@@ -2342,6 +2339,8 @@ static int velocity_change_mtu(struct net_device *dev, int new_mtu)
|
||||
if (ret < 0)
|
||||
goto out_free_tmp_vptr_1;
|
||||
|
||||
+ napi_disable(&vptr->napi);
|
||||
+
|
||||
spin_lock_irqsave(&vptr->lock, flags);
|
||||
|
||||
netif_stop_queue(dev);
|
||||
@@ -2362,6 +2361,8 @@ static int velocity_change_mtu(struct net_device *dev, int new_mtu)
|
||||
|
||||
velocity_give_many_rx_descs(vptr);
|
||||
|
||||
+ napi_enable(&vptr->napi);
|
||||
+
|
||||
mac_enable_int(vptr->mac_regs);
|
||||
netif_start_queue(dev);
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe netdev" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
@ -1,20 +0,0 @@
|
||||
diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h
|
||||
index 580bd58..3d908e9 100644
|
||||
--- a/include/linux/mmdebug.h
|
||||
+++ b/include/linux/mmdebug.h
|
||||
@@ -2,13 +2,13 @@
|
||||
#define LINUX_MM_DEBUG_H 1
|
||||
|
||||
#ifdef CONFIG_DEBUG_VM
|
||||
-#define VM_BUG_ON(cond) BUG_ON(cond)
|
||||
+#define VM_BUG_ON(cond) WARN_ON(cond)
|
||||
#else
|
||||
#define VM_BUG_ON(cond) BUILD_BUG_ON_INVALID(cond)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_VIRTUAL
|
||||
-#define VIRTUAL_BUG_ON(cond) BUG_ON(cond)
|
||||
+#define VIRTUAL_BUG_ON(cond) WARN_ON(cond)
|
||||
#else
|
||||
#define VIRTUAL_BUG_ON(cond) do { } while (0)
|
||||
#endif
|
13
x86-allow-1024-cpus.patch
Normal file
13
x86-allow-1024-cpus.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
|
||||
index f67e839..d726b2d 100644
|
||||
--- a/arch/x86/Kconfig
|
||||
+++ b/arch/x86/Kconfig
|
||||
@@ -825,7 +825,7 @@ config MAXSMP
|
||||
config NR_CPUS
|
||||
int "Maximum number of CPUs" if SMP && !MAXSMP
|
||||
range 2 8 if SMP && X86_32 && !X86_BIGSMP
|
||||
- range 2 512 if SMP && !MAXSMP
|
||||
+ range 2 1024 if SMP && !MAXSMP
|
||||
default "1" if !SMP
|
||||
default "4096" if MAXSMP
|
||||
default "32" if SMP && (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000)
|
Loading…
Reference in New Issue
Block a user